ฉันมีบางโฟลเดอร์ที่มี\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