%2C%20%D0%B0%20%D0%B7%D0%B0%D1%82%D0%B5%D0%BC%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B8%D1%82%D1%8C%20%D0%B2%D1%81%D0%B5%20%D1%8D%D1%82%D0%B8%20%D1%84%D0%B0%D0%B9%D0%BB%D1%8B%20%D0%B2%20%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%83%D1%8E%20%D0%BF%D0%B0%D0%BF%D0%BA%D1%83%3F.png)
Скажите, а что, если я захочу переместить каждый HTML-файл в нескольких независимых каталогах со словом «heavengames» в имени файла (и в качестве второго вопроса, все HTML-файлы со словом «heavengames» в тексте) в новый каталог с именем «heavengames-threads»?
решение1
Чтобы переместить файлы, в названии которых есть это слово:
find /path/to/dir1 /path/to/dir2 /and/so/on -type f -iname "*heavengames*" \
-exec mv -t /path/to/heavengames-threads {} \+
Чтобы переместить файлы, содержащие слово Word в теле:
find /path/to/dir1 /path/to/dir2 /and/so/on -type f -exec grep -q heavengames {} \; \
-exec mv -t /path/to/heavengames-threads {} \+
ps. чтобы проверить, что все правильно, добавьте echo
перед mv
первым запуском.
решение2
В zsh или bash ≥4, в зависимости от имени файла:
mkdir heavengames-threads
mv **/*heavengames*.html heavengames-threads/
Для большей гибкости (например, чтобы воссоздать иерархию каталогов, найдитеzmv
(естьмного примеров на этом сайте).
Используйте grep
для поиска по содержимому файла. С последними версиями утилит GNU (т.е. на невстроенном Linux или Cygwin):
grep -RZ heavengames . | xargs -0 mv -t heavengames-threads/
Для более переносимых команд используйте find
. СмотритеОтвет Раша.