web-dev-qa-db-ja.com

ファイル名から接頭辞を削除する

次のようなファイルがたくさんあります。

04602635_b0294.DAT20120807164534
04602637_b0297.DAT20120807164713
04602638_b0296.DAT20120807164637
04602639_b0299.DAT20120807164819
04602640_b0298.DAT20120807164748
04602641_b0300.DAT20120807164849
04602650_b0301.DAT20120807164921
04602652_b0302.DAT20120807164956

プレフィックスを除外するには、名前を変更する必要があります。このように見える必要があります。

b0294.DAT20120807164534
b0297.DAT20120807164713
b0296.DAT20120807164637
b0299.DAT20120807164819
b0298.DAT20120807164748
b0300.DAT20120807164849
b0301.DAT20120807164921
b0302.DAT20120807164956

[〜#〜]編集[〜#〜]

Solarisを使用していることを忘れてしまいました。

9
for file in * ; do
    echo mv -v "$file" "${file#*_}"
done

これを実行して、すべてが正常であることを確認します。
の場合、コマンドからechoを削除すると、ファイルの名前が変更されます。

"${file#*_}"

シェルの通常の置換機能です。最初の_記号(記号自体を含む)の前のすべての文字を削除します。詳細は こちら をご覧ください。

18
rush

これにはrenameツールを使用できます。

rename "s/.*_//" *

-nを追加すると、名前の変更は行われず、-nなしで何が行われたかが表示されます。

Rushのコメントへの回答:私のrenameは、実際にはDebianおよびUbuntuのprenameパッケージに同梱されているPerlへのリンクです。

7
scai