ฉันมีบางโฟลเดอร์ที่มี\n
ตัวอักษรมันชื่อของพวกเขา
ตัวอย่างเช่น:
$ ls
''$'\n''Test'
อ้างถึงโฟลเดอร์ที่มีชื่อทดสอบและบรรทัดว่างเปล่าหน้าชื่อ
ดังนั้นเมื่อฉันเรียกใช้สคริปต์บางอย่างเช่นนี้ในไดเรกทอรีหลัก:
while IFS= read -r d; do
rmdir $d
done < <(find * -type d)
มันแสดงให้เห็น:
rmdir: failed to remove '': No such file or directory
rmdir: failed to remove 'Test': No such file or directory
เพราะมันทำงานสองครั้งเปิด\n
และอีกครั้งTest
เพราะชื่อโฟลเดอร์มีสองบรรทัด
ดังนั้นฉันจะแก้ปัญหานี้อย่างไรสคริปต์รู้\nTest
เป็นเพียงโฟลเดอร์เดียว?
find * -type d -print0 | while IFS= read -d '' file ; do rmdir $file ; done
คำสั่งมีผลลัพธ์ rmdir: failed to remove 'Test': No such file or directory
นี้
rmdir "$file"
-print0
คำสั่งของ find และ-d
ตัวเลือกการอ่าน ดูstackoverflow.com/a/40189667/7552