Переименовать большое количество файлов в терминале 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

Связанный контент