Bash
如何處理“find”中名稱中包含空格的目錄?
我有這個:
#!/bin/bash for file in `find . -type d` do echo $file done
如果我只有一個名為 的目錄
My Directory
,則輸出為My Directory
我該如何解決?
echo $file
只是暫時的。那裡將有其他程式碼在目錄上執行。
類似以下的作品…
find . -type d | while read dir; do echo $dir; done . ./my dir
根據你在做什麼,你可能會更好地使用
find
’s-print0
option 和xargs -0
.您獲得的程式碼從中獲取未引用的輸出
find
並將其用作單詞列表(在空格上拆分)以for
進行迭代。
不要使用
for
循環,while
而是使用:find . -type d -print0 | while read -d '' -r dir; do echo "$dir"; done
選項
print0
在文件/目錄名稱(而不是換行符)的末尾列印 NULL 字元並read -d ''
正確解釋它。