РЕШЕНО:Поиск файла по содержимому и перенос его в другую папку

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Валентин
Сообщения: 18
ОС: openSUSE

РЕШЕНО:Поиск файла по содержимому и перенос его в другую папку

Сообщение Валентин »

Помогите, затык у меня при формировании команды.
Задача - найти все файлы, в которых есть слово 'failure' и переместить их куда подальше

Последний "релиз" был такой:
find ./ -type f -exec grep -l 'failure' {} | xargs -p -i mv {} /var/qmail/queue/failure/{} \;

никак не получается сформировать строку для mv
Спасибо сказали:
Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: РЕШЕНО:Поиск файла по содержимому и перенос его в другую папку

Сообщение rm_ »

Код: Выделить всё

find ./ -type f -exec grep -l 'failure' {} \&\& mv {} /var/qmail/queue/failure/ \;

Вот как-то так. (на полную синтаксическую корректность и работоспособность не проверял).
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: РЕШЕНО:Поиск файла по содержимому и перенос его в другую папку

Сообщение watashiwa_daredeska »

Код: Выделить всё

find . -type f |xargs grep -l failure |xargs mv -t /var/qmail/queue/failure
или (более переносимо)

Код: Выделить всё

find . -type f |xargs grep -l failure |xargs sh -c 'mv "$@" /var/qmail/queue/failure' sh
или (по одному)

Код: Выделить всё

find . -type f -exec grep -l failure '{}' \; -exec mv '{}' /var/qmail/queue/failure \;
Спасибо сказали:
Валентин
Сообщения: 18
ОС: openSUSE

Re: РЕШЕНО:Поиск файла по содержимому и перенос его в другую папку

Сообщение Валентин »

Пишет:

Код: Выделить всё

./4240556
grep: &&: No such file or directory
grep: mv: No such file or directory
Спасибо сказали:
Аватара пользователя
rm_
Сообщения: 3340
Статус: It's the GNU Age
ОС: Debian

Re: РЕШЕНО:Поиск файла по содержимому и перенос его в другую папку

Сообщение rm_ »

Валентин писал(а):
27.05.2009 12:40
Пишет:

Код: Выделить всё

./4240556
grep: &&: No such file or directory
grep: mv: No such file or directory

Хорошо, уточняю свой вариант (заодно проверив):

Код: Выделить всё

find ./ -type f -exec bash -c "grep -l 'failure' {} && mv {} /var/qmail/queue/failure/" \;

Но у watashiwa_daredeska решения более прямые, судя по всему. :)
Спасибо сказали:
Аватара пользователя
Frank
Сообщения: 1059
ОС: Ubuntu, Debian

Re: РЕШЕНО:Поиск файла по содержимому и перенос его в другую папку

Сообщение Frank »

grep -rl ./ failure |xargs sh -c 'mv "$@" /var/qmail/queue/failure' sh
так не достаточно? :) find не нужен, grep всё равно только с файлами и работает ведь
Изображение
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: РЕШЕНО:Поиск файла по содержимому и перенос его в другую папку

Сообщение Ленивая Бестолочь »

если очень много найдет можно к xargs ключик -l использовать. чтобы по одному.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали: