私のフォローアップとして前の質問、次の形式のファイルが複数ある場合
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}
$var
search
replace
${file/ras./}
$file
ras.
ras.
.