我有一个关于linux命令的问题。如何统计所有以a到g开头的文件?
答案1
LC_ALL=C
set -- [a-gA-G]*
if [ "$1" = '[a-gA-G]*' ]; then
echo 0
else
echo "$#"
fi
答案2
您可以使用一行 shell 命令来完成此操作:
find / -name '[abcedfg]*' -print | wc -l
您将看到一些有关如何find
没有权限读取某个目录或另一个目录的消息,但您将获得名称以这 7 个字母开头的文件的计数。
答案3
该 ls
命令的 GNU 实现(由于您运行的是 Linux,因此您正在使用它)将查找当前目录中以字符 ag 开头的所有文件。
ls --ignore='[!a-g]*'
它指示忽略所有不以范围内的字符开头的文件[a-g]
。反转!
过滤器。*
指示
接下来运行输出来wc -l
计算行数。
完整的命令将是:
ls --ignore='[!a-g]*' | wc -l
该解决方案不会重复出现在子目录中。
答案4
ls -1 [a-g]* | wc -l
为什么会这样呢?因为您可能想要最简单的答案;这个假设您不必担心不计算目录、搜索子目录或大写文件名......这是我最常使用的命令。