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