как найти и удалить несколько файлов в Bash / Linux

0

У меня есть каталоги с подкаталогами, содержащими .srtфайлы. Мне нужно пройти по каталогам и удалить их все. Я знаю как их найти вот так:

find ./directory -name *.srt

но я не уверен, как их доставить rm.

Widgeteye
источник
Прежде всего, вы должны процитировать, *.srtчтобы избежать сбоев оболочки. Без кавычек это будет работать так, как вы ожидаете, только когда *.srtв текущем каталоге нет файлов.
Камиль Мачоровски

Ответы:

1

Синтаксис немного сложнее:

найти ./directory -name "* .srt" -exec rm {} \;
КРП
источник
1
было бы лучше использовать -delete
djsmiley2k
1
-exec rm {} \;порождает rmдля каждого файла. -exec rm {} +удаляет много файлов одновременно; -deleteЯ считаю, что это лучшее, потому что оно не создает новых процессов.
Камиль Мачоровски
1
@ djsmiley2k, хотя -deleteи не является строго переносимым, хотя BSD и GNU оба поддерживают его. Это не указано в POSIX, но если у вас есть, это путь
Эрик Ренуф
Вот что я использовал, и он работал нормально. Спасибо всем, кто ответил и прокомментировал: find TV_Recordings/ -name "*.srt" -delete
Widgeteye