Linuxでファイル名リストの共通サフィックスを削除/置き換える方法は?

Linuxでファイル名リストの共通サフィックスを削除/置き換える方法は?

約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

%「右から削除」は、#左から削除するのと似ています。

おすすめ記事