如何在白色空间的dirs上使用find?

时间:2011-05-18 23:48:16

标签: linux bash

这有点奇怪。

mkdir -p "1/2 3/4"
touch 1/2\ 3/4/file.jpg
for f in $(find . -type f -name \*jpg); do echo "${f}"; done

返回

./1/2
3/4/file.jpg

而不是

./1/2 3/4/file.jpg

如何保留find保留空格,以便文件路径正确?

3 个答案:

答案 0 :(得分:9)

您可以使用-print0选项和xargs -0。例如:

find . -type f -name \*.jpg -print0 | xargs -0 echo

无论文件名的内容如何(即使换行也能正确处理),这都可以。

答案 1 :(得分:3)

它可以通过多种方式完成,但我发现以这种方式做得更好:

find . -type f -name \*.jpg | while read i ; do echo "Procesing $i..." ; done

答案 2 :(得分:2)

看到之间的区别:

find . -type f -name \*.jpg -exec echo {} \;

find . -type f -name \*.jpg -exec echo \"{}\" \;