Benennen Sie eine große Anzahl von Dateien im Ubuntu-Terminal um

Benennen Sie eine große Anzahl von Dateien im Ubuntu-Terminal um

Ich habe einige Dateien mit der Schreibweise: test_026542_time0663550.5.jpegund ich möchte sie umbenennen, test_0663550.jpegum sie einfacher nach der Bestellnummer klassifizieren zu können, da bei den aktuellen Namen einige Fehler auftreten.

Antwort1

Verwenden Sie die renameFunktion. Die grundlegende (Prototypform) ist $ rename s/"SEARCH"/"REPLACE"/g *. Dadurch wird die Datei „SEARCH“ durch „REPLACE“ ersetzt. Das /gbedeutet global, wenn Sie also eine Datei „SEARCH SEARCH.jpg“ hätten, würde sie in „REPLACE REPLACE.jpg“ umbenannt. Das *ist der Erweiterungstyp wie .mp3oder .pdf. Ihr Beispiel wäre also:

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

Dassollte helfen.

Antwort2

Meine Batterie ist fast leer, also mache ich es kurz

Find+awk-Oneliner

 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)}' 

Demo

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

verwandte Informationen