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
来计算脚本文件的数量?
脚本文件通常是可执行的,您可以使用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 文件中的“描述性”)。