Я пытаюсь найти файлы, содержащие * .nef, и переместить их в имя подкаталога NEF папки, в которой находится файл.
Я начал тестирование с помощью следующей команды, но она всегда копируется в мой текущий каталог, который является моей домашней папкой.
find testfolder/*.nef -exec mv NEF \;
В разделе man find я читал об использовании -execdir
, но использование этого вместо -exec
все равно дает тот же результат.
Таким образом, вопрос заключается в следующем: как я могу динамически предполагать, что найденный в данный момент каталог и mv найденные файлы находятся в папке подкаталога с именем NEF? (который еще не существует)
Спасибо заранее!
Вы были правы в рассмотрении -execdir
. Что-то простое как ниже должно работать
find testfolder/ -name '*.nef' -execdir mkdir -p NEF \; -execdir mv {} NEF/ \;
Попытка:
find testfolder/ -iname "*.nef" -exec bash -c 'mkdir $(dirname "{}")/NEF ; mv "{}" $(dirname "{}")/NEF/' \;
dirname
раньше извлекал путь из результата, затем используют его для создания нового подкаталога прежде, чем переместить файл.