Trong phiên bản cũ của Unix, rm
lệnh sẽ xóa các thư mục nếu chúng trống. Từ trang man Research Research Eighth Edition cho rm : "Nếu một mục nhập là một thư mục thì nó chỉ bị xóa nếu trống." Tôi thích hành vi này, vì vậy tôi đã có bí danh này /etc/profile
: alias rm='rm -d'
Tôi đang sử dụng phiên bản GNU coreutils rm
, trong đó sẽ -d
nói rm
trước và xóa các thư mục nếu chúng trống.
Càng xa càng tốt. Bí danh này cho phép tôi sử dụng rm
như ngày xưa. Tuy nhiên, tôi muốn tiến thêm một bước nữa. tôi muốnrm
để xóa một thư mục ngay cả khi thư mục chứa các thư mục khác, miễn là thư mục là thứ duy nhất ở đó. Không quan trọng cấu trúc thư mục đi sâu đến đâu, miễn là không có bất kỳ tệp nào trong đó, chỉ là các thư mục trống (một khi bạn xuống đến cuối), tôi muốn rm
xóa tất cả chúng.
Điều này có thể được viết dưới dạng bí danh vẫn hoạt động như thường lệ rm
và xóa bất kỳ tệp nào được truyền cho nó không?
mkdir -p a/b1/c2 && mkdir -p a/b2/c2; rmdir -p a/b1/c1;
, tôi vẫn còn lại với a, a / b2 và a / b2 / c2. Điều tôi muốn là chỉ vượt qua cấp cao nhất (trong trường hợp này) rm
và xóa mọi thứ bên dưới nó.
rmdir -p
?