Trong thư mục gốc của tôi, tôi có một vài thư mục có tên giống như AA
, BB
, CC
, vv, mỗi file có chứa trong các định dạng AA1001.txt
, BB1002.txt
vv Trong thư mục gốc của tôi, tôi cũng có một tập tin all_to_delete
trong đó có một loạt các tên tập tin tách với dòng mới, do đó tìm kiếm đại loại như thế này:
AA1004.txt
BB3004.txt
BB3005.txt ...
Bây giờ tôi muốn đi qua tất cả các thư mục con trong thư mục gốc của mình và xóa tất cả các tệp khớp với tên tệp đã cho. Cho đến bây giờ, tôi đã thử một cái gì đó như:
while read line; do find . -type f -name $line -exec rm -f {} \;; done
Mặc dù vậy, điều này không thể hoạt động vì đã while read line; do find . -type f -name $line; done
không khớp với bất kỳ tệp nào (vì công cụ tìm kiếm cho kết quả đầu ra là ./AA/AA1001.txt
...)
Các bạn có một giải pháp cho tôi?
find
lệnh, chương trình này sẽ thất bại nếu có của tên tập tin (đặc biệt là bất kỳ của các dòng trongto_delete.txt
) chứa một ký tự đại diện:*
,?
, hoặc[
...]
.