如何在带有空格的目录上使用 find ?

发布于 2024-11-08 15:21:12 字数 319 浏览 0 评论 0原文

这里有一些奇怪的事情。

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

How do I get find 来保留空格,以便文件路径正确?

Here is something strange.

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

This returns

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

and not

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

How do I get find for preserve white spaces so the file path is correct?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

原野 2024-11-15 15:21:12

您可以将 -print0 选项与 xargs -0 一起使用。例如:

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

无论文件名的内容如何,​​这都可以工作(甚至换行符也会被正确处理)。

You can use the -print0 option along with xargs -0. For instance:

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

This would work no matter the content of the file names (even newlines would be handled correctly).

金橙橙 2024-11-15 15:21:12

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

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

It can be done in several ways, but I find it much better to do it this way:

find . -type f -name \*.jpg | while read i ; do echo "Procesing $i..." ; done
烙印 2024-11-15 15:21:12

之间的区别:

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

查看:和:

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

See the difference between:

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

and:

find . -type f -name \*.jpg -exec echo \"{}\" \;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文