Вы также можете сделать это прямо в оболочке. Это может быть полезно, если вы не хотите удалять пустые скрытые файлы (те, чье имя начинается с a .
). Хотя вы можете сделать это и с find
другим, альтернативой будет использование самой оболочки:
shopt -s globstar
for file in **/*; do [ ! -s "$file" ] && [ -f "$file" ] && rm "$file"; done
объяснение
shopt -s globstar
: включает опцию globstar для bash, которая **
сопоставляет одну или несколько подкаталогов. **/*
будет соответствовать всем файлам и каталогам в текущем каталоге и всех его подкаталогах.
for file in **/*; do ...; done
: перебрать все найденные файлы и каталоги;
[ ! -s "$file" ]
: [ -s "$file" ]
true, если файл существует и не пуст. Следовательно, [ ! -s "$file" ]
( !
инвертирует тест) верно, если файл не существует или если он пустой.
[ -f "$file" ]
: true, если файл является обычным файлом. Не каталог, не файл устройства, не символическая ссылка и т. Д.
rm "$file"
: удалить файл.
&&
Убедитесь , что следующая команда выполняется , только если предыдущий был успешным , так это будет только удалить пустые, обычные файлы.