Вы можете уменьшить потенциально большое количество вилок для запуска / bin / rm на:
find . -type f -size 0 -print0 | xargs -0 /bin/rm -f
Вышеприведенная команда является очень переносимой, работает на большинстве версий Unix, а не только на Linux, и на версиях Unix, появившихся в течение десятилетий. Для длинных списков файлов может быть выполнено несколько команд /bin/rm
, чтобы не допустить превышения списком ограничения длины командной строки.
Подобный эффект может быть достигнут с меньшим набором текста на более поздних ОС, при использовании +
в find
для замены наиболее распространенного использования xargs
в стиле все еще поддается другим действиям, кроме /bin/rm
. В этом случае find
будет обрабатывать разбиение действительно длинных списков файлов на отдельные команды /bin/rm
. {}
обычно цитируется, чтобы не дать оболочке что-либо с ней сделать; кавычки не всегда обязательны, но тонкости цитирования в оболочке слишком сложны, чтобы охватывать их, поэтому в случае сомнений включайте апострофы:
find . -type f -size 0 -exec /bin/rm -f '{}' +
В Linux более короткие подходы обычно доступны с использованием -delete
. Обратите внимание, что недавняя первичная find
-delete
напрямую реализована с помощью unlink
(2) и не порождает zillion /bin/rm
команд или даже те немногие, которые xargs
и +
делают. Mac OS find
также имеет основные цвета -delete
и -empty
.
find . -type f -empty -delete
Чтобы растоптать пустые (и недавно освобожденные) файлы, в том числе и каталоги, многие современные хосты Linux могут использовать этот эффективный подход:
find . -empty -delete