我必须做一个bash脚本: 我有一个目录,我正在读取目录中的所有文件,并且我必须find组中的成员没有权限的文件,毕竟我有这些文件将其写入另一个文件并将写权(w)设置给组(g)的成员。
我想出了如何find文件的成员没有权利,但我不知道如何将文件放入另一个文件,并将写作权设置为组的成员。 有人可以帮我吗?
我写echo `find $1 ! -perm /g=rwx`
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`
如果通过将文件放到另一个文件中意味着将其复制,可以这样做:
cp source-file target-file
然后你可以改变拥有组
chgrp your-group target-file
如果仍然有必要的话,你可以为该组添加写入权限
chmod g+w target-file
对于文档运行
man cp man chgrp man chmod
@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 {} \;
此解决方案适用于所有文件名(包括空格,星号和换行符)。