Intereting Posts
Почему ядро ​​Linux называется «образ»? Идентифицировать псевдоним для введенной команды Можно ли иметь файлы, принадлежащие несуществующему пользователю? Что такое массив в awk? Показать использование ядра ЦП для родительского процесса и его дочерних процессов apt установка дополнительных пакетов, чем указано в качестве зависимостей Как запустить tnftpd без root на OS X? Задача Cron для выполнения файлов jar файлов по рабочим дням по местному времени с 8 до 17 часов, без выходных Два приложения GUI как разные пользователи на одном экране Проблемные цитаты Не удалось подключиться к Wi-Fi на Linux Mint для цикла, совпадающего как с передним, так и с обратным именем файла Почему безопаснее предоставлять права sudo для пользователя без root? Одновременно проверьте наличие пустого выхода и успешный статус выхода как установить reverver на centos 6.5 32bit

Переименовать команду с несуществующим целевым каталогом

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

$ rename 's/(.)(.)(.+)/$1\/$2\/$1$2$3/' *.* 

Сухой пробег с параметром -n показывает мне то, что я хочу:

test.jpg переименовано в t / e / test.jpg

Но фактическое переименование не выполняется

Невозможно переименовать test.jpg t / e / test.jpg: Нет такого файла или каталога

потому что подкаталогов еще не существует.

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

Существует разница между переименованием и перемещением куда-то. В случае, когда самый простой способ (в современном bash ) охватывает все файлы:

 for f in *.* do d=${f::1}/${f:1:1} [ -d "$d" ] || mkdir -p "$d" mv "$f" "$d" done