gpt4 book ai didi

bash - 当目录名称中有空格时使用查找结果

转载 作者:行者123 更新时间:2023-11-29 09:02:20 24 4
gpt4 key购买 nike

我试图通过制作一个简单的 bash for 循环来更改所有子目录的权限:

for dir in `find . -type d`; do chmod 755 "$dir"; done

然而,它提示不存在的目录。通过简单地打印循环中的目录名称(将 chmod 755 "$dir" 替换为 echo "$dir"),我发现问题发生在目录时名称中有空格。 for 循环会在每个换行符 空格上拆分 find 的结果。

我想以某种方式让它根据换行符拆分结果并忽略空格。双引号应确保字符串作为一个参数到达 chmod。如何更改拆分?

最佳答案

这个问题通常的解决方法是:

find ... -print0 | xargs -0 ...

-print0 参数导致输出文件名以 nul 结尾,而 xargs 的 -0/-null 参数告诉它阅读这样的格式。

所以在你的情况下......

$ find . -type d -a -print0 | xargs -0 chmod 755

您实际上根本不需要 shell 循环。

关于bash - 当目录名称中有空格时使用查找结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15030057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com