更改文件中多个文件路径的文件权限
Change file permission for multiple file paths in a file
我有一个文件,在文件内容中存储了多个文件路径,例如:
$ cat /var/tmp/sample
/etc/ssl/example/ssl-test1.cert
/etc/ssl/example/ssl-test2.cert
/etc/ssl/example/ssl-test3.cert
...
是否有单行命令循环文件中的文件路径并为每个文件路径设置权限chmod 644 <file paths in /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 -- ""; }
mapfile -t -c1 -C 'cm' < /var/tmp/sample
mapfile 并非真正为此目的而设计,因此它可能比仅使用 xargs 慢很多。
您可以运行以下命令更改所有文件的权限。
for i in `cat /var/tmp/sample`; do chmod 644 $i;done
使用xargs
.
xargs -d '\n' chmod 644 < /var/tmp/sample
另一种使用 xargs 的方法:
cat /var/tmp/sample | xargs -d '\n' chmod 644
我有一个文件,在文件内容中存储了多个文件路径,例如:
$ cat /var/tmp/sample
/etc/ssl/example/ssl-test1.cert
/etc/ssl/example/ssl-test2.cert
/etc/ssl/example/ssl-test3.cert
...
是否有单行命令循环文件中的文件路径并为每个文件路径设置权限chmod 644 <file paths in /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 -- ""; }
mapfile -t -c1 -C 'cm' < /var/tmp/sample
mapfile 并非真正为此目的而设计,因此它可能比仅使用 xargs 慢很多。
您可以运行以下命令更改所有文件的权限。
for i in `cat /var/tmp/sample`; do chmod 644 $i;done
使用xargs
.
xargs -d '\n' chmod 644 < /var/tmp/sample
另一种使用 xargs 的方法:
cat /var/tmp/sample | xargs -d '\n' chmod 644