如何编写一个shell脚本来计算给定文件夹中所有文件中的所有行?

时间:2015-11-14 08:13:44

标签: linux bash shell word-count

我手头有一项复杂的任务,而且 - 我不得不承认我的耻辱 - 对于shell脚本或Linux终端一般来说都不是很熟练,因为我倾向于在R工作。

所以,我想要做的是编写一个shell脚本,按时间顺序执行以下操作:

1:确定今天的格式为YYYY-MM-DD,并将其存储为局部变量或等效变量。我尝试了以下方法:

todays-date=$(date '+%F')

2:移动到要计数的数据所在的正确目录 - 此目录与todays-date相同,并且都在同一个父目录结构中。所以,首先,我这样做:

cd /home/user/docs/parent/data

然后,当我尝试使用今天的数据访问目录时遇到了我的第一个问题:

cd echo $todays-date

这给了我一个错误,就是没有这样的文件或目录'。所以是的,这是问题1。

3:现在我希望脚本计算该目录中所有文件中的所有行(让我们假设我能够访问它)。此文件夹中应该有24个json文件。

wc -l *

这很有效。现在,我想将此信息保存到一个文本文件中,该文件保存到我当前的工作目录中,其名称如下:'todays-date'_wordcount.txt,类似于2015-11-10_wordcount.txt。我担心我真的不知道该怎么做。

我希望将日期作为变量而不仅仅是写出来的原因是我打算每天将这个shell脚本作为cron作业运行一次,因为我已经设置了一个自动数据收集脚本和这个shell脚本是否计算在最后一次迭代中收集了多少数据。如果你们能帮助我,那真是太棒了!非常感谢。

1 个答案:

答案 0 :(得分:3)

破折号不是变量名中的有效字符。改为使用下划线。

todays_date=$(date '+%F')

您可以直接将变量用于cd,不需要echo

cd "$todays_date"

要将命令的输出保存到文件,请使用重定向:

wc -l * > ~/"$todays_date"_wordcount.txt