问题描述
xyz
是否有单行命令来循环文件中的文件路径并为每个文件路径qwe
设置权限?
解决方法
使用xargs
。
xargs -d '\n' chmod 644 < /var/tmp/sample
,
编辑:使用xargs -a /var/tmp/sample -d '\n' chmod 644
您可以逐行读取文件
while read -r filen; do
chmod 644 -- "${filen}"
done < /var/tmp/sample
如果它必须只有一行
while read -r filen; do chmod 644 -- "${filen}"; done < /var/tmp/sample
当文件名包含换行符时,这会出现问题。
不要这样做,但如果由于某种原因你不想使用 while/read,你可以这样做
chmod 644 -- $(</var/tmp/sample)
如果文件名中有任何空格,这将中断。
您不应该但可以做的另一件事是使用内置的 mapfile。
cm(){ chmod 644 -- "${2}"; }
mapfile -t -c1 -C 'cm' < /var/tmp/sample
mapfile 并不是真正为此目的而设计的,因此它可能比仅使用 xargs 慢很多。
,另一种使用 xargs 的方法:
cat /var/tmp/sample | xargs -d '\n' chmod 644
,
您可以运行以下命令来更改所有文件的权限。
for i in `cat /var/tmp/sample`; do chmod 644 $i;done