我如何编写以下脚本来计数我下面有一个目录结构
dir1/diskname
dir2/diskname
dir3/diskname
dir4/diskname
diskname 包含一个值:
hitachi
samsung
LG
我想要一个脚本来扫描磁盘名中的每个目录并计算值
例如,如果 dir1,2,4 中的文件是 hitachi,3 是 samsung,结果将是
hitachi 3
samsung 1
答案1
正如 Panki 所建议的在评论中:
cat dir*/diskname | sort | uniq -c
这将使用 . 将所有diskname
文件连接到一个流中cat
。这sort
实用程序对这些数据进行排序,并uniq -c
计算每行连续出现的次数。
一般情况下,当有数千文件名diskname
,该cat
命令将失败并出现“参数列表太长”错误,因为文件名通配模式dir*/diskname
将扩展到太多路径名。在这种情况下,您可以选择循环遍历所有文件:
for name in dir*/diskname
do
cat "$name"
done | sort | uniq -c
或者,您可以使用find
(假设当前目录是dir*
找到所有目录的位置):
find . -maxdepth 2 -path './dir*/diskname' -type f -exec cat {} + | sort | uniq -c