文字や文字列を削除して複数のファイルの名前を変更するには?

文字や文字列を削除して複数のファイルの名前を変更するには?

私のフォローアップとして前の質問、次の形式のファイルが複数ある場合

sw.ras.001
sw.ras.002
sw.ras.003

ras.ファイルの中央にあるすべてのコンテンツを削除するには、どのコマンドを使用できますか?

ベストアンサー1

前の質問に対する回答を少し変更するだけです。

rename s/ras\.// sw.ras.*

または

for file in sw.ras.*; do
    mv "$file" "${file/ras./}"
done

説明する:

rename正規表現とファイルのリストをperl取得し、各ファイル名に順次正規表現を適用し、正規表現を適用した結果として各ファイルの名前を変更するスクリプトです。perl私たちの場合、rasリテラルと一致し、\.リテラルと一致します..改行文字を除くすべての文字を意味します)。これは何も置き換えません。

このループは(標準シェルglob)で始まるforすべてのファイルを取得し、それを繰り返します。最初の一致を検索してに置き換えるため、最初の一致が返されて削除されます。したがって、このコマンドはファイル名を同じ名前から減算するように変更します。この検索と置換を使用すると、文字は特殊文字ではなく文字通り理解されます。sw.ras.${var/search/replace}$varsearchreplace${file/ras./}$fileras.ras..

おすすめ記事