2013-10-20 73 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

相关问题