Мне нужна команда для удаления всех файлов из каталога (и его подкаталога) объемом менее 20 МБ

За исключением некоторых расширений файлов. (удаление ненужных файлов, кроме файлов субтитров, из каталога видео)

6
задан 5 November 2010 в 12:29

3 ответа

Сначала запустите

find . -type f ! -name '*.sub' ! -name '*.srt' -size -20M -print  

, чтобы убедиться, что он соответствует только тем типам файлов, которые вам нужны. Я давно пользуюсь Unix и всегда делаю это, прежде чем просить какую-либо команду удалить что-либо (опечатки всегда происходят в самое неподходящее время). Затем отредактируйте предыдущую командную строку, чтобы она стала

find . -type f ! -name '*.sub' ! -name '*.srt' -size -20M -print0 | xargs -0 /bin/rm -f  

, и запустите ее. Это должно делать то, что вы хотите. Вы можете повторить часть ! -name '*.srt' несколько раз, если вам нужно исключить больше файлов. Будьте осторожны, чтобы включить одинарные кавычки: они важны для предотвращения расширения оболочкой имени файла.

0
ответ дан 5 November 2010 в 12:29

здесь:

find . -type f -name *.bak -size -20M -exec rm {} \;

с -name *.bak вы ищете файлы с расширением "bak", -type f ищет файлы (не каталоги), -size -20M выдает все файлы меньше 20 МБ (-size +20M для обратного поиска файлов размером более 20 МБ), а с помощью -exec вы удаляете результаты этого поиска.

0
ответ дан 5 November 2010 в 12:29
find . -type f ! -name '*.ext' -size -20M -delete

легче набрать и запомнить, чем что-либо еще. Вы должны помнить, что -delete зависит от позиции и удаляет без дальнейшего уведомления и корзины.

Просто будьте осторожны, делайте резервные копии и проверяйте их перед удалением:

find . -type f ! -name '*.ext' -size -20M 
0
ответ дан 5 November 2010 в 12:29

Другие вопросы по тегам:

Похожие вопросы: