Ви також можете зробити це безпосередньо в оболонці. Це може бути корисно, якщо ви не хочете видаляти порожні приховані файли (ті, ім’я яких починається з а .). У той час як ви можете це зробити 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" ]вірно, якщо файл існує і не порожній. Тому [ ! -s "$file" ]( !перевертає тест) вірно, якщо файл не існує або він порожній.
[ -f "$file" ]: вірно, якщо файл звичайний файл. Не каталог або файл пристрою чи посилання тощо
rm "$file" : видаліть файл.
&&Переконайтеся , що наступна команда виконується , тільки якщо попередній був успішним , так це буде тільки видалити порожні, звичайні файли.