使用file命令统计脚本文件

Osa*_*ron 3 linux command-line find

我需要使用该file命令来计算一个目录的脚本数量。

我知道如何使用file以下方法获取文件类型:

file test
test: Bourne-Again shell script, ASCII text executable
Run Code Online (Sandbox Code Playgroud)

但是我将如何使用file来计算脚本文件的数量?

Sha*_*ido 6

脚本文件通常是可执行的,您可以使用find. 请注意,这些用于查找可执行文件的命令将查找所有可执行文件,而不仅仅是脚本)。

find . -type f -executable
Run Code Online (Sandbox Code Playgroud)

这将在您运行它的目录中找到所有可执行文件。它还将包含来自子目录的文件,要忽略子目录,请添加-maxdepth 1如下:

find . -maxdepth 1 -type f -executable
Run Code Online (Sandbox Code Playgroud)

现在,这将给出所有文件的列表,而不是它们的数量。要接收计数,请将结果通过管道传输到wc -l

find . -type f -executable | wc -l
Run Code Online (Sandbox Code Playgroud)

在某些文件是脚本文件但不可执行的情况下,可以使用以下命令:

  • 如果只计算当前目录中的文件:

    file -b * | grep " script" | wc -l

  • 如果应包含子目录中的文件:

    find . -type f -exec file -b {} \; | grep " script" | wc -l

在 grep 命令中的“script”之前添加一个空格以避免无效匹配(例如 TIF 文件中的“描述性”)。