我在企业中的存储目录(/ store /)中有来自多个系统的集合文件,我希望找到所有passwd文件,并将它们放在一个文件中。直观地,我想出并使用的命令是:
find /store/ -name passwd -type f -exec cat {} + > all_passwds.txt但是这也收集了/etc/passwd文件,它是二进制文件(我假设某些系统符号链接到busybox之类的文件)。我真的只想要基于文本的密码文件。
我的下一个想法是,也许我可以找到所有/etc/passwd文件并拉出regex匹配。我已经尝试了几个小时来创建一个与passwd格式相匹配的正则表达式。
对于创建与/etc/passwd文件匹配的regex或如何确保上面的命令只抓取文本passwd文件,我们将不胜感激。
发布于 2019-06-23 16:34:45
首先:二进制文件可能是bin/passwd -即密码更改工具.
如果所有需要的passwd文件都位于名为etc的子目录中,则可以使用简单的解决方案:
find /store/ -wholename '*/etc/passwd'这只会找到etc/passwd文件,这应该是正确的格式。
如果这不起作用,则使用file实用程序构造一个循环,并且只有当它是文本文件时才进行连接:
file /etc/passwd
/etc/passwd: ASCII text最后,我从一段旧PHP代码中选择了以下正则表达式。根据需要进行调整:
\w+:\w+:\d+:\d+:[\w\d\s,@()]*:[\w\d\s\/]*:[\d\s\w\/]*https://serverfault.com/questions/972572
复制相似问题