/dev/null) #don't care about permission denied errors, so-6ren">
gpt4 book ai didi

regex - 修改包含给定字符串的文件的权限

转载 作者:太空宇宙 更新时间:2023-11-04 10:40:27 25 4
gpt4 key购买 nike

result=$(grep -r "find this string" / | 2> /dev/null) #don't care about permission denied errors, so ditch them.
#regex=':(.+)' #matches after the filename (ie. ':String to match')
for line in $result
do
#need to preform regex on result
echo "line = $line..."
chown root:root $line
chmod 700 $line
done

我有一个作业要求一个 shell 脚本,它会在整个 Linux 文件系统中的所有文件中找到一个字符串(如 /),然后将这些文件的权限更改为仅可用按根。

我能想到的唯一方法是使用 grep 和正则表达式(正则表达式提取结果的 :string 部分)但我不知道如何在bash 变量。

在 Perl 中,它类似于 $line =~ s/$regex//g(抱歉,我的 Perl 也有点生疏了)。

也欢迎使用更简单的解决方案。我可能过于复杂了:)

最佳答案

这是我放在一起的单行命令,它将“在整个 Linux 文件系统中的所有文件中找到一个字符串(如/),然后将这些文件的权限更改为仅可用(在本例中具体为由 root 读/写)。”

find /. -type f -exec grep -rl 'textyouarelookingfor' {} \; -exec chmod 600 {} \; -exec chown root:root  {} \; > /dev/null 2>&1

它查找文件并搜索指定的文本,然后将权限和所有者/组更改为 root。

我无法形容它的美感或速度,但我知道它对子目录中的文件很有用!我不建议在你的机器上运行它来搜索像 '' 这样的文本。它可能会通过更改对您不期望的事情的权限来搞乱您的整个机器...

将单行放入 shell 脚本中,您就完成了。

关于regex - 修改包含给定字符串的文件的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35373333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com