Linux Bash文件阅读行和单词

时间:2014-04-16 03:18:02

标签: linux bash shell

如果这是一个微不足道的问题,我道歉。我正在学习如何使用linux bash,这个小任务让我头疼......

所以我需要编写一个脚本,让它称之为count.sh。我想要:对于工作目录中的每个文件,将文件名,行数和单词数打印到控制台:

  

test.txt 100 1023

     

someOtherfiles 10 233

到目前为止,我知道以下内容为我提供了目录中的所有文件名。感谢所有帮助过我的人,我得到了这个工作版本:

for f in *; do
echo -n "$f"
cat "$f" | wc -wl
done

我真的很感谢你的帮助!谢谢你!

P.S。如果你知道很好的资源(教程链接)来学习脚本,你愿意和我分享。我想我真的需要了解这些基础知识。再次感谢!

2 个答案:

答案 0 :(得分:0)

如果您必须将文件名作为输出中的第一个字段,请尝试以下操作:

for f in *; do
  if [ -f "$f" ]; then
    echo -n "$f"
    cat "$f" | wc -wl
  fi
done

答案 1 :(得分:0)

for f in *; do
  if [[ -f $f ]]; then
    echo "$f $(wc -wl < "$f")"
  fi
done
  • [[ -f $f ]]仅处理文件(不包括子目录),还处理目录为空的情况(在这种情况下*是(默认情况下)未展开,即按原样分配给$f
  • echo "$f $(wc -wl < "$f")"使用命令替换$( ... ))直接在传递给echo的输出字符串中包含附带命令的输出。
  • 请注意,<用于通过 stdin 将文件$f的内容定向到wc的原因是wc否则将输入文件的名称附加到其输出中(谢谢@R Sahu)。