31

Мне нужно найти все файлы, начинающиеся с имени NAME в дереве каталогов и удалить все эти файлы с помощью одной команды оболочки.

7 ответов7

60

Удалите все файлы в текущем каталоге и его подкаталогах, где имя файла начинается с "foo":

$ find . -type f -name foo\* -exec rm {} \;

NB: используйте с осторожностью - сначала сделайте резервную копию - сначала выполните пробный прогон, например,

$ find . -type f -name foo\*

просто скажет вам имена файлов, которые будут удалены.

14

Я пробовал таким образом, это работает для меня, попробуйте ниже команды.

rm -rf Example*

здесь "Пример" - это текст, общий для всех файлов.

10

Вы можете использовать find:

find . -name "name*" -exec rm {} \;
3

С опцией globstar (включить с shopt -s globstar):

rm -f **/NAME*

**/ расширяется до ./ , */ , */*/ , */*/*/ и т. д. Если у вас есть имя каталога, начинающееся с NAME , команда будет жаловаться, что rm не может удалить каталоги, но это все.

Обратите внимание, что это может привести к ограничениям длины командной строки, если глобус совпадает со многими файлами.

В качестве альтернативы, с минимальным количеством вызовов rm , но без ограничений по длине командной строки:

find . -type f -name 'NAME*' -exec rm -f {} +

(Обратите внимание на + вместо \; чтобы закрыть оператор -exec .)

2

find . -name 'foo'* -type f -delete кажется самым простым ответом.

Вы можете запустить это без флага -delete прежде, чтобы увидеть, какие файлы будут удалены.

-1

удалить все файлы, имя которых имеет имя --- вы можете использовать

find -name . 'name*' -exec rm {} \;
-2

Найдите номер "Inode" файла / папки, а затем удалите, используя номер Inode. Ниже приведен пример:

ls -il
3407873 drwxr-xr-x. 2 root   root      4096 Mar 30 07:49 –p

find . -inum 3407873 -exec rm -rf {} \;

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