Найти и выполнить в найденной папке

Я пытаюсь найти файлы, содержащие * .nef, и переместить их в имя подкаталога NEF папки, в которой находится файл.

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

find testfolder/*.nef -exec mv NEF \;

В разделе man find я читал об использовании -execdir, но использование этого вместо -exec все равно дает тот же результат.

Таким образом, вопрос заключается в следующем: как я могу динамически предполагать, что найденный в данный момент каталог и mv найденные файлы находятся в папке подкаталога с именем NEF? (который еще не существует)

Спасибо заранее!

4
задан 13 July 2014 в 12:42

2 ответа

Вы были правы в рассмотрении -execdir. Что-то простое как ниже должно работать

find testfolder/ -name '*.nef' -execdir mkdir -p NEF \; -execdir mv {} NEF/ \; 
4
ответ дан 13 July 2014 в 12:42

Попытка:

find  testfolder/ -iname "*.nef" -exec bash -c 'mkdir $(dirname "{}")/NEF ; mv "{}" $(dirname "{}")/NEF/' \;

dirname раньше извлекал путь из результата, затем используют его для создания нового подкаталога прежде, чем переместить файл.

2
ответ дан 13 July 2014 в 12:42

Другие вопросы по тегам:

Похожие вопросы: