我想知道.c在大型复杂目录结构中有多少常规文件具有扩展名,以及这些文件分布在多少个目录中。我想要的输出只是这两个数字。
我已经看到有关如何获取文件数的问题,但我也需要知道文件所在的目录数。
.或开头-并带有空格或换行符。.c,结尾的符号链接,以及指向目录的符号链接。我不希望跟踪或计算符号链接,或者我至少想知道它们是否以及何时被计算在内。.c文件。我在(Bash)shell中匆匆写了一些命令来自己计算,但我认为结果不准确......
shopt -s dotglob
shopt -s globstar
mkdir out
for d in **/; do
find "$d" -maxdepth 1 -type f -name "*.c" >> out/$(basename "$d")
done
ls -1Aq out | wc -l
cat out/* | wc -l
Run Code Online (Sandbox Code Playgroud)
这会输出关于不明确重定向的抱怨,错过当前目录中的文件,并在特殊字符上绊倒(例如,重定向find输出在文件名中打印换行符)并写入一大堆空文件(oops)。
如何可靠地枚举我的.c文件及其包含的目录?
如果有帮助,这里有一些命令来创建一个带有错误名称和符号链接的测试结构:
mkdir -p cfiles/{1..3}/{a..b} && cd cfiles
mkdir space\ d
touch -- i.c -.c bad\ .c 'terrible
.c' not-c …Run Code Online (Sandbox Code Playgroud)