ハイフンとその後のすべてのエントリを含むファイル名を一括変更します。

ハイフンとその後のすべてのエントリを含むファイル名を一括変更します。

私はLinuxを使用しており、ファイルは次のようになります。

10154-person134_bacteria_640.jpeg         
10163-NORMAL2-IM-0141-0001.jpeg    
10175-person147_bacteria_707.jpeg    
2555-person1_virus_12.jpeg    
25562-person132_bacteria_632.jpeg           
25566-person143_bacteria_687.jpeg    

次のように見えるようにする必要があります。

10154.jpeg     
10163.jpeg     
10175.jpeg     
2555.jpeg    
25562.jpeg    
25566.jpeg    

awkを試しましたが、問題が発生しました。

ベストアンサー1

すでにインストールされている場合perl-rename(DebianやUbuntuを含む多くのシステムにあるrename)、次のことができます。

$ rename -n 's/(.+?)-.*\./$1./' *jpeg
10154-person134_bacteria_640.jpeg -> 10154.jpeg
10163-NORMAL2-IM-0141-0001.jpeg -> 10163.jpeg
10175-person147_bacteria_707.jpeg -> 10175.jpeg
2555-person1_virus_12.jpeg -> 2555.jpeg
25562-person132_bacteria_632.jpeg -> 25562.jpeg
25566-person143_bacteria_687.jpeg -> 25566.jpeg

予想される出力が表示されたら、-n実際にファイル名を変更せずにコマンドを再実行してください。

または、シェルで次のことを実行できます。

$ for file in *jpeg; do echo mv -- "$file" "${file%%-*}.jpeg"; done
mv -- 10154-person134_bacteria_640.jpeg 10154.jpeg
mv -- 10163-NORMAL2-IM-0141-0001.jpeg 10163.jpeg
mv -- 10175-person147_bacteria_707.jpeg 10175.jpeg
mv -- 2555-person1_virus_12.jpeg 2555.jpeg
mv -- 25562-person132_bacteria_632.jpeg 25562.jpeg
mv -- 25566-person143_bacteria_687.jpeg 25566.jpeg

繰り返しますが、期待どおりに印刷されたら、echo実際にファイル名を変更せずにコマンドを実行してください。

おすすめ記事