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循环. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |