Мені потрібно знайти всі файли, починаючи з імені, NAME
у дереві каталогів і видалити всі ці файли за допомогою однієї команди оболонки.
Мені потрібно знайти всі файли, починаючи з імені, NAME
у дереві каталогів і видалити всі ці файли за допомогою однієї команди оболонки.
Відповіді:
щоб видалити всі файли, ім'я яких має ім'я --- ви можете використовувати
find -name . 'name*' -exec rm {} \;
grep
має -exec
перемикач?
Видаліть усі файли з поточного каталогу та його підкаталогів, де назва файлу починається з "foo":
$ find . -type f -name foo\* -exec rm {} \;
Примітка: використовуйте з обережністю - резервне копіювання спочатку - також виконайте сухий пробіг, наприклад, наприклад
$ 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
прапора, щоб побачити, які файли буде видалено.