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