我必须创建一个bash脚本:我有一个目录,我正在读取目录中的所有文件,我必须找到该组成员没有权限的文件,在所有这些文件之后,我必须将其放入另一个文件并将写权限(w)设置为组(g)的成员。
我想出了如何查找组成员没有权限的文件,但我不知道如何将文件放入另一个文件并将写入权限设置为组成员。有人可以帮帮我吗?
我写echo `find $1 ! -perm /g=rwx`
只是为了查看文件是否正确使用。
#!/bin/bash
if [ $# -eq 0 ]
then echo "Nu exista parametri"
exit 1
fi
if [ ! -d $1 ]
then echo "It's not a directory" #Check if the parameter is a directory
exit 1
fi
echo `find $1 ! -perm /g=rwx`
答案 0 :(得分:1)
如果将文件放入另一个文件意味着复制它们,您可以按如下方式进行:
cp source-file target-file
然后您可以使用
更改拥有组chgrp your-group target-file
并且,如果仍有必要,您可以使用
为该组添加写入权限chmod g+w target-file
用于文档运行
man cp
man chgrp
man chmod
答案 1 :(得分:1)
@afdggfh告诉我,但完整的解决方案可能如下:
files=$(find $dir ! -perm /g=rwx)
for file in $files; do
trg=$trgdir/$(basename $file)
cp $file $trg;
chmod g+w $trg;
done;
----------------编辑-------------
或者,您可以添加-exec
参数进行查找。此参数允许您就地执行命令。在这种情况下,{}
表示找到的文件名,\;
表示exec命令的结尾:
find $dir ! -perm /g=rwx -exec cp {} $trgdir \; -exec chmod g+w {} \;
此解决方案适用于所有文件名(包括带空格,星号和换行符的文件名)。