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