Linux命令输出部分输入文件的名称和行数

时间:2009-09-02 17:17:06

标签: bash

对于一堆文件,您将连续使用哪些Linux命令来计算文件中的行数并输出到输出文件,并将相应输入文件的一部分作为输出行的一部分。例如,我们查看文件LOG_Yellow并且它有28行,输出文件将有这样的行(Yellow28是制表符分隔的):

Yellow    28

4 个答案:

答案 0 :(得分:4)

wc -l [filenames] | grep -v " total$" | sed s/[prefix]//

wc -l以几乎正确的格式生成输出; grep -v删除wc为你生成的“total”行; sed从文件名中删除你不想要的垃圾。

答案 1 :(得分:2)

wc -l * | head --lines=-1 > output.txt

产生如下输出:

linecount1 filename1
linecount2 filename2

我认为你应该能够从这里开始工作,以满足你的需求。

编辑:由于我没有看到您提取名称的规则,我仍然保留全名。但是,与其他答案不同,我更倾向于使用head而不是grep,这不仅应该稍快一些,而且还可以避免过滤掉名为total*的文件。

edit2 (已阅读评论):以下内容完成了所有内容:

wc -l * | head --lines=-1 | sed s/LOG_// | awk '{print $2 "\t" $1}' > output.txt

答案 2 :(得分:2)

wc -l *| grep -v " total" 发送

28黄色

如果需要,可以反转它(如果文件名中没有空格,则为awk) wc -l *| egrep -v " total$" | sed s/[prefix]// | awk '{print $2 " " $1}'

答案 3 :(得分:1)

没有为你编写脚本:

  • 'for'用于循环播放文件。
  • 'echo -n'用于打印当前文件
  • 'wc -l'用于查找行数
  • 不要忘记重定向 ('>'或'>>')您的结果 输出文件