Tôi chỉ mở một kho lưu trữ tạo ra một mớ hỗn độn các tập tin vào thư mục gọn gàng của tôi. Ví dụ:
user@comp:~/tidy$ tar xvf myarchive.tar
file1
file2
dir1/
dir1/file1
dir1/subdir1/
dir1/subdir1/file1
dir2/
dir2/file1
...
Tôi đã hy vọng rằng tập tin tar sẽ được tổ chức trong một thư mục duy nhất (nghĩa là myarchive/
), nhưng không phải vậy! Bây giờ tôi có khoảng 190 tệp và thư mục đã được mã hóa kỹ thuật số trong thư mục có tổ chức. Những tập tin chưa được chỉnh sửa này cần được dọn sạch.
Có cách nào để "hoàn tác" cái này và xóa các tập tin và thư mục được trích xuất từ kho lưu trữ này không?
Cảm ơn các câu trả lời tuyệt vời dưới đây. Tóm lại , đây là những gì hoạt động với hai bước (1) xóa tệp và (2) xóa cấu trúc thư mục trống theo thứ tự đóng gói ngược (để xóa các thư mục bên ngoài trước):
tar tf myarchive.tar | xargs -d'\n' rm
tar tf myarchive.tar | tac | xargs -d'\n' rmdir
Và an toàn hơn nữa, để xem trước một lệnh khô bằng cách nối thêm echo
sau xargs
.
xargs
( tac
thay vì sort -r
chỉ là mỹ phẩm), nhưng bạn chấp nhận câu trả lời với sự thay thế quy trình, như bạn đã giải thích trong các bình luận, không phù hợp với bạn? Ngoài ra, vui lòng cung cấp công xargs -d'\n'
tắc trong bài đăng của bạn nếu bạn muốn tóm tắt cho người dùng trong tương lai, vì vậy họ sẽ không bị cắn bởi khoảng trắng trong tên tệp.
-d'\n'
cho đến bây giờ, và khi phân tích sâu hơn, câu trả lời của bạn thực sự gần với những gì tôi đã sử dụng.
-d'\n'
dối trá trong thực tế là nếu bạn không yêu xargs
cầu phân chia các đối số trên các dòng mới (đó là những gì bạn đang cho ăn) nhưng trên một khoảng trắng, thì một tệp có Tên folder1/some file
sẽ được đọc là folder1/some
và name
.