find. -type f '(' -name '*.bmp' -o -name '*.jpg' ')' -exec sh -c ' for pathname do newname="${pathname%/*}_${pathname##*/}" # a/b/c/d.bmp --> a/b/c_d.bmp newname="target/${newname##*/}" # a/b/c_d.bmp --> target/c_d.bmp printf "Would move %s to %s\n" "$pathname" "$newname" # mv -i "$pathname" "$newname" done' sh {} +
Это находит все обычные файлы, имена которых заканчиваются на
.jpg
или.bmp
. Для пакетов этих файлов выполняется короткий сценарий оболочки.Сценарий оболочки извлекает путь к каталогу каждого файла вместе с его именем файла и объединяет два с символом подчеркивания в -между ними. Это формирует новое имя. Затем новое имя обрезается из его начальных каталогов, оставляя только имя файла, и к нему добавляется путь к целевому каталогу.
Конечная
mv
закомментирована в целях безопасности. Запустите это один раз, закомментировав его, чтобы убедиться, что он работает правильно.Связанные: