Bash:如何将一个命令的每个结果通过管道传输到另一个命令

发布于 2024-09-12 15:00:34 字数 241 浏览 6 评论 0原文

我想获取以下命令返回的所有文件的行数计数:

shell> find . -name *.info

所有 .info 文件都嵌套在子目录中,所以我不能简单地这样做:

shell> wc -l *.info

我确定这应该是任何 bash 用户的必备技能,但我卡住了!

谢谢

I want to get the total count of the number of lines from all the files returned by the following command:

shell> find . -name *.info

All the .info files are nested in sub-directories so I can't simply do:

shell> wc -l *.info

Am sure this should be in any bash users repertoire, but am stuck!

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

压抑⊿情绪 2024-09-19 15:00:34
wc -l `find . -name *.info`

如果您只想要总数,请使用

wc -l `find . -name *.info` | tail -1

编辑:管道到 xargs 也可以,并且希望可以避免“命令行太长”。

find . -name *.info | xargs wc -l
wc -l `find . -name *.info`

If you just want the total, use

wc -l `find . -name *.info` | tail -1

Edit: Piping to xargs also works, and hopefully can avoid the 'command line too long'.

find . -name *.info | xargs wc -l
聆听风音 2024-09-19 15:00:34

您可以像这样使用 xargs:

find . -name *.info -print0 | xargs -0 cat | wc -l

You can use xargs like so:

find . -name *.info -print0 | xargs -0 cat | wc -l
未蓝澄海的烟 2024-09-19 15:00:34

一些谷歌搜索出现,

find /topleveldirectory/ -type f -exec wc -l {} \; | awk '{total += $1} END{print total}'

似乎可以解决问题

some googling turns up

find /topleveldirectory/ -type f -exec wc -l {} \; | awk '{total += $1} END{print total}'

which seems to do the trick

别再吹冷风 2024-09-19 15:00:34
#!/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"
#!/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"
謸气贵蔟 2024-09-19 15:00:34
find . -name "*.info" -exec wc -l {} \;

自读题注意事项

find . -name "*.info" -exec cat {} \; | wc -l
find . -name "*.info" -exec wc -l {} \;

Note to self - read the question

find . -name "*.info" -exec cat {} \; | wc -l
辞旧 2024-09-19 15:00:34
# for a speed-up use: find ... -exec ... '{}' + | ...
find . -type f -name "*.info" -exec sed -n '$=' '{}' + | awk '{total += $0} END{print total}'
# for a speed-up use: find ... -exec ... '{}' + | ...
find . -type f -name "*.info" -exec sed -n '$=' '{}' + | awk '{total += $0} END{print total}'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文