如何批量修改文件中记录的多个文件路径的权限?
单行命令实现批量修改文件权限
当然有合适的单行命令!针对你这个场景(文件路径用逗号分隔),这里有两种实用的方案:
方案1:简洁的xargs写法
这是最常用的批量处理方式,适合路径没有特殊字符(比如空格、引号)的场景:
cat /var/tmp/sample | tr ',' '\n' | xargs chmod 644
解释:
cat /var/tmp/sample:读取存储路径的文件内容tr ',' '\n':把内容里的逗号分隔符替换成换行符,让每个路径单独占一行xargs chmod 644:把处理后的每一行路径作为参数传递给chmod 644,批量修改权限
方案2:更稳健的while循环写法
如果你的文件路径可能包含特殊字符(比如空格),这个方法更安全,避免出现意外:
while IFS= read -r path; do chmod 644 "$path"; done < <(tr ',' '\n' < /var/tmp/sample)
解释:
tr ',' '\n' < /var/tmp/sample:同样先把逗号换成换行while IFS= read -r path:逐行读取处理后的路径,IFS=避免路径开头/结尾的空格被忽略,-r禁止反斜杠转义,保证路径原样读取chmod 644 "$path":给每个路径对应的文件设置权限,双引号包裹路径防止特殊字符引发问题
小提示:
执行前可以先测试命令是否正确,把chmod 644换成echo chmod 644,这样能预览要执行的操作,避免误改文件:
cat /var/tmp/sample | tr ',' '\n' | xargs echo chmod 644
内容的提问来源于stack exchange,提问作者kaiilim
相关产品推荐
相关产品推荐

