我正在尝试在我的目录中打印文件名,其中行/字计数全部在一行上。我的输出现在的方式:
foo.txt的
500
跳回到bar.txt
210
... 应该是什么:
foo.txt 500
bar.txt 210 ...
我期待的答案如下: wc -l | awk {something}
答案 0 :(得分:0)
这是一种简单但有缺陷的方法:
wc -l *.txt | awk '$2 != "total" { print $2, $1 }'
但是,如果文件名中有空格,则上面将打印在第一个空格处截断的那些文件名。此外,对总线的检查也很弱,并且对于一个名为“total disaster.txt”的文件而言非常突破(感谢@rici对于精明的批评)。
这是一个更安全但更长的解决方案:
wc -l *.txt | awk '{ count = $1; sub("^ *[0-9]+ ", ""); if ($0 != "total") print count, $0 }'
答案 1 :(得分:0)
你可以使用一个简单的循环,和awk:
表示我在* .txt中
做
awk'END {printf“%s%d \ n”,FILENAME,NR}'$ i
完成
或者,您可以像这样使用wc -l:
wc -l * .txt | awk'$ 2!=“total”{printf“%s%d \ n”,$ 2,$ 1}'
答案 2 :(得分:-1)
wc -l *.txt | awk '{print $2,$1}'
您的问题中是否提供了示例输入的工作?
有些用户担心文件名中不必要的空格字符
以下内容对您有用:
for i in *.txt; do echo ${i##*/} `wc -l "$i" | awk '{print $1}'`; done