Как я нахожу набор файлов со строкой в ее имени файла (или основной текст) и затем перемещаю все те файлы в определенную папку?

Существуют некоторые пакеты, доступные для узла, которые упрощают системные сценарии.

Диспетчер пакетов узла является, вероятно, самым легким способом установить такие пакеты; сам узел может быть создан из источника (с v8 механизмом, на котором он работает), или установленный через некоторых менеджеров по системному пакету.

Вы, возможно, должны учиться использовать evented ввод-вывод для получения очень сделанными.

5
17.06.2012, 05:30
2 ответа

Перемещать файлы со словом на его имя:

find /path/to/dir1 /path/to/dir2 /and/so/on -type f -iname "*heavengames*" \
-exec mv -t /path/to/heavengames-threads {} \+

Перемещать файлы со словом в его теле:

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 на первом показе.

4
27.01.2020, 20:39

В zsh или ударе ≥4, на основе имени файла:

mkdir heavengames-threads
mv **/*heavengames*.html heavengames-threads/

Для большей гибкости (например, для воссоздания иерархии каталогов, ищут zmv(существует много примеров на этом сайте).

Использовать grep искать содержание файла. С последними версиями утилит GNU (т.е. на невстроенном Linux или Cygwin):

grep -RZ heavengames . | xargs -0 mv -t heavengames-threads/

Для большего количества портативных команд использовать find. См. ответ Порыва.

2
27.01.2020, 20:39

Теги

Похожие вопросы