5

Предположим, у меня есть каталог с файлами и подкаталогами. Некоторые файлы содержат шаблон «^ File:» в своем содержимом.

Есть ли способ использовать команду grep и bash для удаления файлов, содержащих этот шаблон? Заметьте, я говорю о содержимом файла, а не об именах файлов.

3 ответа3

4
grep -rlI "meow" * | xargs -I{} rm -v {} 

Приведенный выше код удаляет файлы, содержащие meow .

Это также обрабатывает случаи, когда есть имена файлов с пробелами и другими символами. xargs rm -f , как предлагается в других ответах, потерпит неудачу.

2

Достаточно простого конвейерного поиска (будьте осторожны, я не проверял это на большом наборе данных - сделайте резервную копию чего-нибудь важного):

find /path/to/dir -type f -exec egrep -Il '^File:' {} \;|xargs rm -fv
1

Вот один вкладыш.

grep -r "^File:" /path/to/directory | cut -d: -f1 | sort | uniq | xargs rm -f

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .