Trong trường hợp điều kiện cuộc đua rất cao: lệnh tiếp theo sẽ xóa các tệp lỗi thời và sau đó xóa các thư mục trống:
find /somedir -type f -atime +3 -print0 | xargs -0 --no-run-if-empty rm -f; find /somedir -mindepth 1 -type d -empty -not -name "*.empty" -print0 | xargs -0 --no-run-if-empty -I{} mv {} {}.empty; sleep 30; find /somedir -type d -name '*.empty' -print0 | xargs -0 --no-run-if-empty rm -rf
Hoặc từng bước:
find /somedir -type f -atime +3 -print0 | xargs -0 --no-run-if-empty rm -f;
find /somedir -mindepth 1 -type d -empty -not -name "*.empty" -print0 | xargs -0 --no-run-if-empty -I{} mv {} {}.empty;
sleep 30;
find /somedir -type d -name '*.empty' -print0 | xargs -0 --no-run-if-empty rm -rf;
ngủ 30 là cần thiết cho tất cả các quá trình để hoàn thành việc viết vào direcory loại bỏ.
CẢNH BÁO: bạn có thể mất dữ liệu mới của mình (trong trường hợp của tôi là bộ đệm nên tôi không quan tâm).
rm -rf
nên luôn luôn thành công, thiếu các vấn đề cho phép. Yêu cầu kịch bản in đầu ra gỡ lỗi nếu loại bỏ thất bại.ls -laR a/b
nên đủ.