2013-10-20 76 views
1

我嘗試了下面的例子,但它不返回任何內容,但是如果我放下名稱中的空格,它將起作用。如何處理文件夾名稱中的空間?在名稱中有空格的文件夾中搜索

MainDir="/Users/redres/Dropbox/Computer\ Ebooks/Skimmed" 

# FS=$'\n' 

while IFS= read -d $'\0' -r file ; do 
      printf 'File found: '"'%s'"'\n' "$file" 
    done < <(find "$MainDir" -iname '*' -print0) 

i=1 

for i in $(find $MainDir -type f); do echo "$i"; done; 

感謝

回答

0
MainDir="/Users/redres/Dropbox/Computer\ Ebooks/Skimmed" 

要麼引用空間或\ -escape它,而不是兩個。使用

MainDir="/Users/redres/Dropbox/Computer Ebooks/Skimmed" 
+0

令人難以置信,就這麼簡單,非常感謝 – Richard

0

代碼的格式足以讓人哭泣!

然而,這應該工作,假設沒有實際的目錄名反斜槓空間之前:

MainDir="/Users/redres/Dropbox/Computer Ebooks/Skimmed" 

while IFS= read -d '' -r file 
do 
    printf "File found: '%s'\n" "$file" 
done < <(find "$MainDir" -print0) 

例如:

$ mkdir -p 'Double Spaced Directory/Holograms/Object Lesson' 
$ cp /dev/null 'Double Spaced Directory/Holograms/Object Lesson/Obstacle Course' 
$ MainDir=$PWD/"Double Spaced Directory" 
$ while IFS= read -d '' -r file 
> do 
>  printf "File found: '%s'\n" "$file" 
> done < <(find "$MainDir" -iname '*' -print0) 
File found: '/Users/jleffler/soq/Double Spaced Directory' 
File found: '/Users/jleffler/soq/Double Spaced Directory/Holograms' 
File found: '/Users/jleffler/soq/Double Spaced Directory/Holograms/Object Lesson' 
File found: '/Users/jleffler/soq/Double Spaced Directory/Holograms/Object Lesson/Obstacle Course' 
$ 
+0

對格式化抱歉,我只是繼續嘗試所有的例子。他們中沒有一個提到反斜槓,因爲幾乎所有人都在他們的例子中使用了這個點。 – Richard

相關問題