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