我希望获得以下命令返回的所有文件中行数的总计数:
shell> find . -name *.info
所有.info文件都嵌套在子目录中,所以我不能简单地执行:
shell> wc -l *.info
我确定这应该是任何bash用户的保留曲目,但我被卡住了!
由于
答案 0 :(得分:2)
你可以这样使用xargs
:
find . -name *.info -print0 | xargs -0 cat | wc -l
答案 1 :(得分:2)
wc -l `find . -name *.info`
如果您只想要总数,请使用
wc -l `find . -name *.info` | tail -1
编辑:管道到xargs
也有效,希望可以避免'命令行太长'。
find . -name *.info | xargs wc -l
答案 2 :(得分:1)
find /topleveldirectory/ -type f -exec wc -l {} \; | awk '{total += $1} END{print total}'
似乎可以解决这个问题
答案 3 :(得分:0)
#!/bin/bash
# bash 4.0
shopt -s globstar
sum=0
for file in **/*.info
do
if [ -f "$file" ];then
s=$(wc -l< "$file")
sum=$((sum+s))
fi
done
echo "Total: $sum"
答案 4 :(得分:0)
find . -name "*.info" -exec wc -l {} \;
注意自我阅读问题
find . -name "*.info" -exec cat {} \; | wc -l
答案 5 :(得分:0)
# for a speed-up use: find ... -exec ... '{}' + | ...
find . -type f -name "*.info" -exec sed -n '$=' '{}' + | awk '{total += $0} END{print total}'