Мне нужно найти все файлы, начиная с имени, NAMEв дереве каталогов и удалить все эти файлы с помощью одной команды оболочки.
Мне нужно найти все файлы, начиная с имени, NAMEв дереве каталогов и удалить все эти файлы с помощью одной команды оболочки.
Ответы:
удалить все файлы, имя которых имеет имя --- вы можете использовать
find -name . 'name*' -exec rm {} \;
grepимеет -execпереключатель?
Удалите все файлы в текущем каталоге и его подкаталогах, где имя файла начинается с «foo»:
$ find . -type f -name foo\* -exec rm {} \;
NB: используйте с осторожностью - сначала сделайте резервную копию - сначала выполните пробный прогон, например,
$ find . -type f -name foo\*
просто скажет вам имена файлов, которые будут удалены.
find . -type f -name foo\* -deleteсделал свое дело
Я пробовал таким образом, это работает для меня, попробуйте ниже команды.
rm -rf Example*
здесь «Пример» - это текст, общий для всех файлов.
Вы можете использовать find:
find . -name "name*" -exec rm {} \;
С globstarопцией (включить с помощью shopt -s globstar):
rm -f **/NAME*
**/расширяется до ./, */, */*/, и */*/*/т.д. Если у вас есть каталог имя , начинающееся с NAME, то команда будет жаловаться , что rmне может удалить каталоги, но это все.
Обратите внимание, что это может привести к ограничениям длины командной строки, если глобус совпадает со многими файлами.
В качестве альтернативы, с rmминимально возможным количеством вызовов , но без ограничений по длине командной строки:
find . -type f -name 'NAME*' -exec rm -f {} +
(Обратите внимание, +вместо того, \;чтобы закрыть -execутверждение.)
find . -name 'foo'* -type f -delete кажется самым простым ответом.
Вы можете запустить это без -deleteфлага, прежде чем посмотреть, какие файлы будут удалены.