Tôi có một số thư mục với \nký tự tên của họ.
ví dụ:
$ ls
''$'\n''Test'
Đó là tham chiếu đến một thư mục có tên Test và một dòng trống trước tên của nó.
Vì vậy, khi tôi chạy một số tập lệnh như thế này, trong thư mục mẹ của nó:
while IFS= read -r d; do
rmdir $d
done < <(find * -type d)
Nó cho thấy:
rmdir: failed to remove '': No such file or directory
rmdir: failed to remove 'Test': No such file or directory
Bởi vì nó chạy hai lần, một lần \nvà lần khác Test, vì tên thư mục có hai dòng.
Vậy làm thế nào tôi có thể giải quyết vấn đề này sao cho, script biết \nTestchỉ là một thư mục?
find * -type d -print0 | while IFS= read -d '' file ; do rmdir $file ; donelệnh có đầu ra này rmdir: failed to remove 'Test': No such file or directory.
rmdir "$file"
-print0chỉ thị find và-dtùy chọn đọc. Xem stackoverflow.com/a/40189667/7552