約100個の* .txtファイルがあります。
txtファイルのサフィックスを削除/交換したいです。
Linuxではどうすればいいですか?
Example:
1_S9_001.f.txt
2_S13_001.f.txt
3_S23_001.f.txt
4_S45_001.f.txt
5_S90_001.f.txt
Changing the file name:
1_S9.txt
2_S13.txt
3_S23.txt
4_S45.txt
5_S90.txt
Renaming:
1_S9_rt.txt
2_S13_rt.txt
3_S23_rt.txt
4_S45_rt.txt
5_S90_rt.txt
答え1
システムによっては、コマンドの動作がrename
大きく異なる場合があります。man
詳しくはページをご覧ください。
最初のタイプはより簡単です。置換する文字列と置き換える文字列を指定するだけです。
rename _001.f "" *_001.f.txt
rename _001.f _rt *_001.f.txt
2番目のタイプはPerl置換を使用します。
rename 's/_001\.f//' *_001.f.txt
rename 's/_001\.f/_rt/' *_001.f.txt
または、ループおよびパラメータ拡張を使用して直接新しい名前を設定することもできます。
for f in *_001.f.txt ; do
mv "$f" "${f%_001.f.txt}".txt
mv "$f" "${f%_001.f.txt}"_rt.txt
done
%
「右から削除」は、#
左から削除するのと似ています。
答え2
私があなたを正しく理解したかどうかはわかりません。次のコードは、「example」ファイルの名前を「rename」ファイルに変更します。
for f in *.txt; do mv "$f" "$(echo "$f" | sed -e 's/001.f/rt/')";done