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


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

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

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

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

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

Заранее спасибо!


2
2017-07-13 06:44


происхождения




ответы:


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

find testfolder/ -name '*.nef' -execdir mkdir -p NEF \; -execdir mv {} NEF/ \; 

3
2017-07-21 06:18



Вау, такая чистая команда, которая работает отлично. Предыдущее решение не совсем работало с папками, содержащими пробелы, но это делает. Большое спасибо. - fairlynuts
@fairlynuts Рад, что это помогло. Также обратите внимание, что исходный синтаксис не будет перемещать файлы, если каталог уже существует. Не уверен, что это необходимо в вопросе, но добавил -p, поэтому они все равно перемещаются. - BroSlow
На самом деле, я не слепо копировал ваше решение, сначала попробовал, набрав его, чтобы понять, что я делаю. Внезапно я увидел, что был только один файл, который был скопирован в созданную папку «NEF», а остальная часть была проигнорирована, ведь ошибка «не может создать каталог», но мне не хватало опции -p, которую вы уже дали. После завершения работы mv я могу теперь сказать, что это сработало отлично, что действительно включает опцию -p. Благодаря! - fairlynuts
execdir это находка - maxisme


Пытаться:

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

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


2
2017-07-13 08:04



Работает как шарм, спасибо большое! - fairlynuts