Bash

如何處理“find”中名稱中包含空格的目錄?

  • January 10, 2015

我有這個:

#!/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 -print0option 和xargs -0.

您獲得的程式碼從中獲取未引用的輸出find並將其用作單詞列表(在空格上拆分)以for進行迭代。

不要使用for循環,while而是使用:

find . -type d -print0 | while read -d '' -r dir; do echo "$dir"; done

選項print0在文件/目錄名稱(而不是換行符)的末尾列印 NULL 字元並read -d ''正確解釋它。

引用自:https://unix.stackexchange.com/questions/178466