Как массовое переименование в OS X с моими требованиями

5

Существует ли утилита, которая может переименовывать фильтры в нескольких подпапках, а затем последовательно переименовывать файлы внутри?

Например. Я выбираю my-pictures и он сделает свое волшебство и последовательно переименует все файлы во всех подпапках. Для каждой новой подпапки нумерация сбрасывается до 1.

старая структура

my-pictures (parent folder)
-- folder1
---- in-costa-rica.png
---- swimming-at-beach-costa-rica.png
-- panama-folder
---- panama-canal.png
---- with-witch-doctor.png

желаемая / новая структура

my-pictures (parent folder)
-- folder1
---- 0001.png
---- 0002.png
-- panama-folder
---- 0001.png
---- 0002.png
mrjayviper
источник

Ответы:

6

Следующие строки в терминале должны сделать свое дело

for dir in my-pictures/*; do
    if [[ -d "$dir" ]]; then
        cd "$dir"
        i=0
        for file in *; do
            echo mv "$file" $(printf "%04d" $i).png
            (( i=i+1 ))
        done
        cd -
    fi
done

Я положил в echo оператор для подавления выполнения, чтобы вы могли проверить его первым. Если вывод выглядит нормально, просто удалите echo и перезапустить.

Это предполагает, что в каждой подпапке не более 1000 файлов, ни один из файлов уже не переименован и что все они являются изображениями PNG.

По умолчанию файлы сортируются по имени. Если вы хотите отсортировать по дате, замените второй for заявление с

for file in $(ls -t); do
nohillside
источник
0

Если вы можете сделать с выбором отдельных подпапок, для этого есть приложение , Это может не делать то, что вы хотите, но, тем не менее, может сэкономить много времени.

Rish
источник