将文件放入文件并更改权限

时间:2017-04-28 16:53:35

标签: linux bash

我必须创建一个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`

2 个答案:

答案 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 {} \;

此解决方案适用于所有文件名(包括带空格,星号和换行符的文件名)。