加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 当目录名称中包含空格时使用查找结果

发布时间:2020-12-15 22:45:16 所属栏目:安全 来源:网络整理
导读:我正在尝试通过简单的bash for循环来更改所有子目录的权限: for dir in `find . -type d`; do chmod 755 "$dir"; done 但是,它抱怨不存在的目录.只需从循环中打印目录名称(用echo“$dir”替换chmod 755“$dir”)我就知道当目录名称中有空格时会出现问题.会
我正在尝试通过简单的bash for循环来更改所有子目录的权限:

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

但是,它抱怨不存在的目录.只需从循环中打印目录名称(用echo“$dir”替换chmod 755“$dir”)我就知道当目录名称中有空格时会出现问题.会发生的是for循环在每个换行符和空格上分割find的结果.

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

解决方法

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

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

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

所以在你的情况下……

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

实际上你根本不需要shell循环.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读