我正在扫描我服务器上的所有shell脚本,并通过以下命令执行此操作:
find / -type f -exec file --mime-type {} \; | grep "text/x-shellscript"
这工作正常,这是一个示例输出:
/lib/udev/hwclock-set: text/x-shellscript
/lib/init/bootclean.sh: text/x-shellscript
/etc/network/if-up.d/openssh-server: text/x-shellscript
/etc/network/if-up.d/mountnfs: text/x-shellscript
现在,我想处理文件名,并尝试使用awk:
find / -type f -exec file --mime-type {} \; | grep "text/x-shellscript" | awk -F: '{ print $1 }'
但是,这不会产生任何输出。我曾尝试重定向管道等,但在这里我已经碰壁了。
任何人都知道我做错了什么?
@DanielBeck那很有效。也许发现不写到stdout?但后来我无法解释grep如何发挥其作用...
—
狗吃猫世界
您可以将错误输出重定向到标准输出。您的命令将如下所示:
—
Daniel Beck
find / -type f -exec file --meta-type {} \; | grep "text/x-shellscript" 2>&1 | awk -F: '{ print $1 }'
@DanielBeck不,它没有帮助。我试过“find / -type f -exec file --mime-type {} \; | grep”text / x-shellscript“2>&1 1> this_file_should_not_be_empty”,但似乎grep输出到了无处!即使文本显示在监视器上而没有管道重定向。
—
狗
您可以缩小问题轨迹,并通过消除那里的无用使用来
—
JdeBP 2011年
grep
摆脱问题上的其中一个标记。
echo "/etc/network/if-up.d/mountnfs: text/x-shellscript" | awk -F: '{ print $1 }'
?