Переименование файлов на основе имен каталогов

Как я могу переименовать .jpg файлы в несколько папок в зависимости от имени папки? Я также хочу, чтобы файлы .jpg оставались в соответствующих папках и не перемещались. В именах папок нет пробелов.

Например, если имя папки имеет значение «Красный», я хочу, чтобы имена файлов были следующими:

 Red000001.jpg Red000002.jpg Red000003.jpg 

У меня есть следующая команда, но она дает нежелательные результаты, перемещая переименованные файлы за пределы их соответствующих папок и делая имена файлов «sloppy»:

 start=$PWD; for directory in *; do cd "$directory"; for filename in *; do mv "$filename" ../"Folder $directory - $filename"; done; cd "$start"; done 

One Solution collect form web for “Переименование файлов на основе имен каталогов”

Если вам нужно входить и выходить из нескольких каталогов, тогда имеет смысл использовать cd - вместо этого вы перейдете в последний текущий рабочий каталог. Или вы используете pushd / popdbash ).

 for directory in *; do pushd "$directory" index=1 for filename in *; do extension="${filename##*.}" if [ "$filename" != "$extension" ]; then extension=".$extension" else # ie there is no dot in the file name extension="" fi target_filename="${directory}$(printf "%06d" "$index")${extension}" if [ -f "$target_filename" ]; then echo "File ${target_filename} exists; aborting." exit 3 fi mv "$filename" "${target_filename}" ((index++)) done popd done 

Этот код не обрабатывает коллизии имен (если он уже есть файл Red00004 ). Он просто проверяет и прерывает.

  • Медленное выполнение сценария
  • Bash: как получить значение из массива для создания команды из него
  • Как передать массив функции как действительный параметр, а не глобальную переменную
  • Преобразуйте строки в целые числа и сравните
  • Создайте файл журнала с тем же именем, что и входной файл
  • Сценарий оболочки для назначения значений из таблицы поиска слишком медленный
  • shell-скрипты все еще работают без #! (строка sha-bang)
  • Sed для копирования части имени файла в другое содержимое файла с той же подстрокой
  • правильный способ перебора содержимого в каталоге
  • Как запустить сценарий оболочки в качестве демон в Redhat?
  • Печать эха в файле и запрос параллельно
  • Linux и Unix - лучшая ОС в мире.