Tôi có một số thư mục với \n
ký 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 \n
và 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 \nTest
chỉ là một thư mục?
find * -type d -print0 | while IFS= read -d '' file ; do rmdir $file ; done
lệnh có đầu ra này rmdir: failed to remove 'Test': No such file or directory
.
rmdir "$file"
-print0
chỉ thị find và-d
tùy chọn đọc. Xem stackoverflow.com/a/40189667/7552