Разбор шаблонов и удаление файлов - PullRequest
1 голос
/ 22 февраля 2011

У меня есть внешний файл, который содержит список шаблонов (шаблон на строку).

pattern1
foo bar
pattern_n
bar
bar foo

Я хотел бы grep всех файлов, включая файлы в подпапках, используя эти шаблоны, если шаблон соответствует, скопируйте файл в некоторый / tmp / mybackup / и затем удалите его. Что было бы хорошим способом сделать это?

Ответы [ 2 ]

7 голосов
/ 22 февраля 2011

Если я правильно понимаю вашу проблему, вам понадобятся следующие ключи для grep:

  • -R для рекурсивного сканирования
  • -l для печати только совпадающих имен файлов
  • -f для чтения шаблонов из файла
  • -I для игнорирования двоичных файлов

так:

grep -RlIf patterns-file *

затем передайте этот результат другой утилите для резервного копирования, например, xargs:

grep -RlIf patterns-file * | xargs -I {} mv {} /tmp/backup

или с петлей:

for afile in `grep -RlIf patterns-file *`; do
   mv $afile /tmp/backup
done
1 голос
/ 22 февраля 2011

Попробуйте

for x in `fgrep -f patternfile.txt -l -r .`; do cp $x /tmp/mybackup; rm $x; done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...