Ubuntuターミナルで多数のファイルの名前を変更する

Ubuntuターミナルで多数のファイルの名前を変更する

: と記述されたファイルがいくつかありますが、現在の名前にいくつかエラーがあるため、順序番号で簡単に分類できるようにtest_026542_time0663550.5.jpeg名前を に変更したいと思います。test_0663550.jpeg

答え1

関数を使用しますrename。その基本 (プロトタイプ形式) は です$ rename s/"SEARCH"/"REPLACE"/g *。これは、ファイル "SEARCH" を "REPLACE" に置き換えます。 は/gグローバルを意味するため、"SEARCH SEARCH.jpg" があった場合、名前が "REPLACE REPLACE.jpg" に変更されます。 は、または の*ような拡張子タイプです。したがって、例は次のようになります。.mp3.pdf

$ rename s/'test_026542_time0663550.5.jpeg'/'test_0663550_.jpeg'/g *

これ役立つはずです。

答え2

バッテリーが切れそうなので、短くします

検索+awkワンライナー

 find . -type f -printf "%f\n" |  awk -F "_" 
    '{ORIG=$0;gsub(/\_[[:digit:]].*\_time/,"_");gsub(/\.[[:digit:]].*\.jpeg/,".jpeg"); NEW=$0;cmd="mv "ORIG" 
    "NEW;system(cmd)}' 

デモ

testdir2:$ ls
test_13442_time1446925878.1.jpeg  test_27796_time1446925887.4.jpeg
test_25495_time1446925884.3.jpeg  test_29681_time1446925881.2.jpeg


testdir2:find . -type f -printf "%f\n" |  awk -F "_" 
'{ORIG=$0;gsub(/\_[[:digit:]].*\_time/,"_");gsub(/\.[[:digit:]].*\.jpeg/,".jpeg"); NEW=$0;cmd="mv "ORIG" 
"NEW;system(cmd)}' 

testdir2:$ ls
test_1446925878.jpeg  test_1446925881.jpeg  test_1446925884.jpeg  test_1446925887.jpeg

関連情報