Bashスクリプトを使用して複数のファイル名を変更する

Bashスクリプトを使用して複数のファイル名を変更する

Bashスクリプトを使用して、同じディレクトリにある複数のファイルの名前を変更したいと思います。ファイル名は次のとおりです。

file2602201409853.p
file0901201437404.p  
file0901201438761.p  
file1003201410069.p  
file2602201410180.p

次の形式に名前を変更したいと思います。

file2503201409853.p
file2503201437404.p  
file2503201438761.p  
file2503201410069.p  
file2503201410180.p

renameコマンドを読んでみましたが、何も実行されておらず、構文に問題があるようです。それからあなたが利用できることを読んだ。MVコマンドは次のとおりです。

for file in cmpsms*2014*.p; do
    mv "$file" "${file/cmpsms*2014*.p/cmpsms25032014*.p}"
done

ただし、このファイルの名前を変更することはできません。私は何が間違っていましたか?

ベストアンサー1

まず、名前の変更を検討するのが正しいです。正規表現に慣れていない場合は、構文が少し変わりますが、一度実行していることがわかったら、最速かつ最短のパスになります。

rename 's/\d{4}/2503/' file*

これは最初の4つの数字と一致し、それをユーザーが指定した数字に置き換えます。

とテストハーネス(-vn詳細な内容を意味しますが、そうではありません)する何でも)ファイル名を使用して:

$ rename 's/\d{4}/2503/' file* -vn
file0901201437404.p renamed as file2503201437404.p
file0901201438761.p renamed as file2503201438761.p
file1003201410069.p renamed as file2503201410069.p
file2602201409853.p renamed as file2503201409853.p
file2602201410180.p renamed as file2503201410180.p

おすすめ記事