Мне нужно найти все файлы, начиная с имени, 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
флага, прежде чем посмотреть, какие файлы будут удалены.