Удалить файлы с совпадением только из некоторых подкаталогов

У меня есть каталог с несколькими подкаталогами; в каждом из них у меня есть несколько файлов. Я хочу выполнить grep только для некоторых подкаталогов, чтобы найти те файлы, которые соответствуют запросу, и удалить их; что-то вроде grep -rl --exclude-dir=dir1 --exclude-dir=dir2 HUMAN . | rm grep -rl --exclude-dir=dir1 --exclude-dir=dir2 HUMAN . | rm grep -rl --exclude-dir=dir1 --exclude-dir=dir2 HUMAN . | rm , но я бы предпочел не разбирать stdin из grep .

Я думаю, мне нужно совместить find и rm , но я не знаю, как это сделать.

Более того, кажется, что (по крайней мере, здесь, в Cygwin), я не могу сделать –exclude-dir = {dir1, dir2}, мне нужно разбить их. Это небольшая проблема, но кто-то знает, почему это не работает?

One Solution collect form web for “Удалить файлы с совпадением только из некоторых подкаталогов”

 grep -rlZ --exclude-dir=dir1 --exclude-dir=dir2 HUMAN . | xargs -r0 rm -f 

Если вы хотите find обход каталога:

 find . -type d \( -name dir1 -o -name dir2 \) -prune -o \ -type f -exec grep -lZ HUMAN {} + | xargs -r0 rm -f 

Портативно / стандартно, это должно быть:

 find . -type d \( -name dir1 -o -name dir2 \) -prune -o \ -type f -exec grep -q HUMAN {} \; -exec rm -f {} + 

но это означает, что вы используете один grep каждого файла.

Для работы --exclude-dir={dir1,dir2} вам понадобится оболочка с поддержкой расширения скобок, например csh, tcsh, ksh, zsh, bash или fish.

  • Что произойдет, если rm остановлено на полпути через подсказки?
  • поврежденные каталоги, проблема их удаления
  • Предотвращает ли Ctrl-C (SIGINT) вывод данных, даже если были процессы, которые пытались его выводить
  • Удаляются ли ссылки между файлом inode и data файла при удалении файла?
  • Как удалить все файлы в текущем каталоге за исключением последних двух
  • Черный экран после запуска команды
  • Как избежать необходимости выдавать «y» несколько раз при удалении защищенного файла
  • предоставлять разрешение на чтение, запись, выполнение, но не может быть удалено другими пользователями
  • Как восстановить файлы, которые я удалил сейчас, запустив rm *?
  • Сжатие и удаление исходного каталога с ограниченным хранилищем
  • Синтаксис для команды rm. Обеспокоенный использованием опции -r
  • Linux и Unix - лучшая ОС в мире.