Солярис используется в корпоративной среде для высокой загрузки, высоких серверов времени работы - который должен быть хорошей рекомендацией сам по себе.
Если Вы хотите войти в некоторые более тайные аппаратные средства затем, можно найти более высокое OSs производительности, но от вопроса я предполагаю, что Вы хотите остаться с Intel.
Перейдите к каталогу верхнего уровня дерева, содержащего zip-файлы (cd …
), затем выполненный
mv **/*.zip /path/to/single/target/directory
Это работает из поля в zsh. Если Ваша оболочка будет ударом, то необходимо будет работать shopt -s globstar
сначала (Вы можете и должны вставить эту команду Ваш ~/.bashrc
). Если Ваша оболочка будет ksh, то необходимо будет работать set -o globstar
сначала (вставляет его Ваш ~/.kshrc
).
С другой стороны, используйте find
, который работает везде без специальной подготовки, но более сложен:
find . -name '*.zip' -exec mv {} /path/to/single/target/directory \;
Если Вы хотите удалить пустые каталоги впоследствии в zsh:
rmdir **/*(/^Fod)
В ударе или ksh:
rmdir **/*/
и повторитесь, пока существуют пустые каталоги для удаления. С другой стороны, в любой оболочке
find . -depth -type d -empty -exec rmdir {} \;
Если Вы только хотите переместиться .zip
файлы, Вы могли сделать что-то как
mkdir ./zipfiles
find . -name "*.zip" -exec mv "{}" ./zipfiles \;
При использовании версии 4 удара или выше или zsh, можно также использовать рекурсивный globbing:
mv **/*.zip /path/to/move/zip/files/to
Это переместит ТОЛЬКО файлы и не их относительные пути, таким образом, коллизии могли бы произойти.
Как взлом удара, Вы могли использовать питание tar
:
(cd origin/;find . -exec file --mime-type "{}" \;|grep "application/zip"|cut -d ':' -f 1|xargs tar cf -)|(cd target/; tar xf -) && rm -fr origin/
Это имеет преимущество, что оно не зависит от расширений файла, так как оно использует file
команда для выбора файлов для перемещения и это сохраняет структуру каталогов, но это не работает с путями, содержащими пробелы.
Финал rm
должен туда только удалить исходные файлы (becouse @InquilineKea tolds, о котором он не заботится об исходной папке в комментарии).
Конечно, это особенно подходит, если источник / и цель / папки находится на различных дисках. Иначе другие предложенные решения более эффективны (даже если они полагаются на соглашения о присвоении имен, вместо file
содержание).
Предполагая, что у вас есть GNU-версии find и mv, следующие действия будут более эффективными, чем существующие ответы на основе find:
find . -name '*.zip' -exec mv --target-directory='/path/to/outputdir' '{}' +
Использование +
в конце find -exec означает, что команде mv будет передан список файлов, а не выполнение одной команды mv на каждый найденный файл. Однако ограничение заключается в том, что вы можете поместить '{}' только в конце команды, что требует использования опции mv --target-directory, а насколько я знаю, это GNU-изм.
Этот безопасен при перемещении данных и безошибочен, что поддерживается большинством дистрибутивов независимо от версии. Эта команда просканирует подкаталоги, а затем переместит или скопирует в новый каталог назначения.
find. -name *.flac -exec mv '{}' "./flac/" ";"
*.flac
на что-то вроде *.zip
в вашем случае. Или *.doc
работает любое расширение. mv
— это команда для перемещения файлов, или вы можете использовать cp
для копирования данных вместо перемещения. ./flac/
— это каталог назначения, в который я хочу переместить все файлы FLAC. Вы также можете указать полный путь, например/home/myid/flac/
Полный пример. (в этом случае есть много подкаталогов с именем музыкального исполнителя в /home/myid/Music/
, а затем файлы FLAC находятся на разных уровнях подкаталогов. Поскольку мне не нужны папки исполнителей, но я хочу, чтобы все файлы FLAC находились в одном каталоге по адресу/home/myid/Music/flac/
cd /home/myid/Music
mkdir flac
find. -name *.flac -exec mv '{}' "./flac/" ";"
cd flac
ls
Затем отобразятся все файлы FLAC.
В дополнение к совету Жиля, где он предложил
mv **/*.zip /path/to/single/target/directory/
вы можете получить ответ
mv: will not overwrite just-created
, поскольку в целевой каталог могут копироваться повторяющиеся имена файлов.
Если вы добавите --backup=numbered
, это создаст пронумерованные файлы резервных копий с повторяющимися именами.
напр.duplicate-name.zip.~1~
find
команда выше обработанного в ударе, но должен был измениться наfind . -name
и т.д. заставить это работать. – JeffThompson 29.05.2017, 22:08.
неявно для GNU, находят, но не для других, я добавил его явно. – Gilles 'SO- stop being evil' 29.05.2017, 23:31