如果这是一个微不足道的问题,我道歉。我正在学习如何使用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。如果你知道很好的资源(教程链接)来学习脚本,你愿意和我分享。我想我真的需要了解这些基础知识。再次感谢!
答案 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)。