Как я могу найти все файлы определенного типа / имени и скопировать их на уровень выше? Вот древовидная структура файловой системы:
germany/
|
adventure/
|
300x600/
| |
| file1.jpg
| file2.zip
|
400x600/
|
file8.jpg
file4.zip
switzerland/
|
adventure/...
Существует много страновых папок, около 20, и файлы .zip не гарантированно имеют 3 уровня глубины. В настоящее время я нахожусь в их родительской папке countries/
и я хочу найти и скопировать все файлы .zip на один уровень вверх, в каталог adventure/
соответствующей страны / папки.
Я старался:
find . -type f -name '*.zip' -exec mv {}/.. \;
но тот с треском провалился. Он перемещал каждый файл на один уровень вверх, затем они снова перемещались на один уровень вверх.
Спасибо!
EDIT: Я играл немного с решениями от ответов и читать много страниц man
:). Наконец, я принял решение, которое мне понравилось больше всего, так как оно элегантное и не зависит от оболочки.
Что-то я все еще пытаюсь выяснить:
- Есть ли
find
работу в качестве контура или делать фигурные скобки получить лечение как «список / массив» в других языках программирования? Значение: он заполняется найденными результатами (т. Е. Строками) одновременно и ТО передается команде под-exec
? - Почему движение сначала произошло на один уровень вверх, а затем снова на один уровень вверх?
- Есть ли способ немедленно сказать
mv/cp
перейти на уровни -n [вверх / вниз]?