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


0

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

find ./directory -name *.srt

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


Прежде всего, вы должны процитировать, *.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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.