Я скачал несколько файлов изображений, но они рекурсивно упорядочены по месяцам и дням, поэтому есть папка и файл для дня месяца, я пытаюсь перебрать все файлы, найденные командой find, и переместить их просто одна папка в моем домашнем каталоге. mv find ~/Downloads/skydrive* -name *.jpg -exec mv ~/temp {} \;

он не работает, говорит, что каталог не существует, я также пробовал цикл for, но я получаю тот же результат. какой-нибудь свет на это? Заранее спасибо.

3 ответа3

3

Вы были близки - вы только что получили аргументы mv в неправильном порядке - попробуйте:

$ find ~/Downloads/skydrive* -name \*.jpg -exec mv {} ~/temp/ \;
1

попробуйте ввести свое имя в одинарные кавычки: найдите '~/Downloads/skydrive *' -name '* .jpg' -exec mv ~/temp {} \;

0

Это также можно сделать, если ваша оболочка bash версии 4+ (что, как я считаю, имеет место в OSX) с использованием параметра оболочки globstar и цикла for:

shopt -s globstar
for f in ~/Downloads/skydrive/**/*.jpg; do mv "$f" ~/temp/; done

Это сломается, если у вас будет несколько сотен тысяч файлов jpg, тогда как решения find не будут, но для чего-то еще это должно работать на отлично.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .