确定文件是否是脚本

时间:2011-09-26 23:35:04

标签: linux

我想知道如何使用文件命令并确定文件是否是脚本。例如 usr bin 我想知道哪个文件是脚本与否。实际上我不想写任何脚本只是我需要一个命令来确定。

3 个答案:

答案 0 :(得分:0)

这应该有用(假设你使用的是BASH):

for f in `ls`; do file $f|grep "executable"; done

更新 - 我刚刚验证了这适用于C shell脚本,BASH,Perl和Ruby。它还忽略了文件权限(意味着即使文件没有设置可执行位,它仍然有效)。这似乎是在寻找命令解释器的文件命令(bash,perl等等)

答案 1 :(得分:0)

file无法保证告诉您有关文本文件的任何信息,如果它不知道如何解释它。

您可能需要做一些事情的组合。 jschorr的答案可能适用于/ bin中的内容,但测试文件的另一种方法可能是检查文本文件是否可执行。

stat -c "%A" myfilename | grep x

如果返回任何内容,那么您的文件就具有执行权限。因此,如果file为您提供描述,告诉您它是纯文本(如"ASCII text"),并且该文件具有执行权限,那么这是一个非常好的选择,它是一个脚本文件。

不完美,但我认为不会有任何结果。

答案 2 :(得分:0)

您当然可以信任文件,以便在您指定的目录中找到任何脚本:

file /usr/bin/* | grep script

或者,如果你喜欢自己做,而你正在使用bash,你可以这样做:

for f in /usr/bin/*; do r=$(head -1 $f | grep '^#! */') && echo "$f: $r"; done

使用shebang来确定解释器,从而确定脚本实体。