Переименование пакета независимо от расширения файла

Я являюсь довольно новым для пакетной обработки переименования, и я озирался немного, и я нашел некоторый материал при переименовании большого количества файлов, которые являются всеми одинаковыми тип, но ничто действительно при переименовании набора файлов, которые имеют различные расширения.

этим я подразумеваю, что у меня есть каталог как так:

Folder 
  |
  file.jpg
  EBUFEWO.png
  otherFile.jpg

и я пытаюсь выяснить, как я могу переименовать его, чтобы быть похожим на это:

Folder
  |
  Renamed_0001.jpg
  Renamed_0002.png
  Renamed_0003.jpg

Я хотел бы сохранить расширения файлов в папке, но переименовать их как я имею выше здесь.

Я искал некоторое время и действительно не столкнулся ни с каким примером этого, любая справка была бы большой!

2
задан 26 January 2017 в 01:59

2 ответа

Я думаю, что сделал бы

shopt -s nullglob

cd Folder

n=1
for file in *.*; do 
  printf -v newfile 'Renamed_%04d.%s' $((n++)) "${file##*.}"
  echo mv -- "$file" "$newfile"
done
mv -- EBUFEWO.png Renamed_0001.png
mv -- file.jpg Renamed_0002.jpg
mv -- otherFile.jpg Renamed_0003.jpg

(echo добавленный для тестирования). С другой стороны, с находящимся в perl prename

cd Folder
prename -n 'our $n; s/(.*)\.(.*)$/sprintf "Renamed_%04d.%s", ++$n, $2/e' *.*
EBUFEWO.png renamed as Renamed_0001.png
file.jpg renamed as Renamed_0002.jpg
otherFile.jpg renamed as Renamed_0003.jpg

(-n добавленный для тестирования).

1
ответ дан 2 December 2019 в 04:50

Я надеюсь, что это помогает

count=1; \
for file in * ; do ext=${file##*.}; \
while [ ${#count} -ne 3 ]; do count="0"$count; done; \
mv "$file" Renamed_$count.$ext; count=$((10#$count+1)); done

, Это было протестировано на содержании единственной папки и работало, когда Вы указали.

  1. ext=${file##*.} расширение получения файла, который будет переименован.
  2. while [ ${#count} -ne 3 ]; do count="0"$count; done Вы запросили, чтобы переименованные файлы содержали 3 цифры, это добавляет, что необходимое количество начальных нулей, 1 становится 001, и 20 становится 020 и т.д.
  3. mv "$file" Renamed_$count.$ext;, переименовывает файл к указанным параметрам.

, Учитывая мой ограниченный опыт я уверен, что существуют более простые более эффективные способы.

Примечание, что это выполнялось на указанной папке однажды.

0
ответ дан 2 December 2019 в 04:50

Другие вопросы по тегам:

Похожие вопросы: