Мне нужно найти все файлы, начинающиеся с имени NAME
в дереве каталогов и удалить все эти файлы с помощью одной команды оболочки.
7 ответов
Удалите все файлы в текущем каталоге и его подкаталогах, где имя файла начинается с "foo":
$ find . -type f -name foo\* -exec rm {} \;
NB: используйте с осторожностью - сначала сделайте резервную копию - сначала выполните пробный прогон, например,
$ find . -type f -name foo\*
просто скажет вам имена файлов, которые будут удалены.
Я пробовал таким образом, это работает для меня, попробуйте ниже команды.
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
прежде, чтобы увидеть, какие файлы будут удалены.
удалить все файлы, имя которых имеет имя --- вы можете использовать
find -name . 'name*' -exec rm {} \;
Найдите номер "Inode" файла / папки, а затем удалите, используя номер Inode. Ниже приведен пример:
ls -il
3407873 drwxr-xr-x. 2 root root 4096 Mar 30 07:49 –p
find . -inum 3407873 -exec rm -rf {} \;