Я установил (скомпилированный) изумруд. Команда make uninstall
не работала (нет make-файла, так как это всего лишь скрипт). Поэтому я решил удалить файл вручную. Но там было много файлов.
Я пробовал кое-что, но это не сработало. Поэтому я пришел сюда, чтобы попросить совета.
ls -R | grep blabla*
, которую я могу добавить для отображения каталога файлов (он отображает только имя файла) ls -R | grep bla* | rm
? Если «aname» будет начальной частью имени файла, оно будет из текущего каталога:
find -name "aname" -delete
Кстати:
grep "bla"* somewhere
почти всегда ложно , поскольку grep уже делает частичные совпадения, а это значит, что он находит bla, blafasel и xybla просто
grep bla somewhere
Удалена старая часть ответа из-за недопонимания:
Из текущий каталог, если вы ищете слово «aname» во всех файлах, вы можете просто использовать:
find -exec grep "aname" {} ";" -delete
strike>
Между другими ответами: вы можете вызвать rm
без необходимости использования программы xargs
. Фактически вы обычно можете использовать опцию exec
для find
вместо xargs
.
Чтобы вызвать rm
как можно меньше раз, при больших пакетах файлов:
find /path/to/dir -name "*name*" -exec rm {} +
Чтобы вызвать rm
один раз для каждого файла:
find /path/to/dir -name "*name*" -exec rm {} ";"
Есть также более сложные параметры для find
, которые изменятся на каталог перед выполнением команды.
То, что вы ищете, это комбинация xargs
, find
и rm
.
find
создаст список всех файлов, соответствующих вашим условиям, а затем запишет их (завершено нулем) в stdout
, который будет передан в xargs
. xargs
будет принимать строки с нулевым символом в конце и использовать их в качестве аргументов для rm
.
find -L /path/to/dir -name "*name*" -print0 |xargs -0 -r rm
источник: http://linuxcommando.blogspot.com/2007/10/find-xargs-pipe.html