
Tengo algunos archivos que fueron escritos como: test_026542_time0663550.5.jpeg
y me gustaría cambiarles el nombre test_0663550.jpeg
para poder clasificarlos fácilmente por número de pedido porque tengo algunos errores con los nombres actuales.
Respuesta1
Utilice la rename
función. Su forma básica (prototipo) es $ rename s/"SEARCH"/"REPLACE"/g *
. Esto reemplaza el archivo "BUSCAR" con "REPLACE". Significa /g
global, por lo que si tuviera un "SEARCH SEARCH.jpg", pasaría a llamarse "REPLACE REPLACE.jpg". Es *
el tipo de extensión como .mp3
o .pdf
. Entonces, tu ejemplo sería:
$ rename s/'test_026542_time0663550.5.jpeg'/'test_0663550_.jpeg'/g *
Estedebería ayudar.
Respuesta2
Mi batería se está agotando, así que haré esto breve.
Buscar+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)}'
Manifestación
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