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

How to write a shell script counting all lines in all files in a given folder?

我手头有一个有点复杂的任务,而且 - 我不得不承认我的耻辱 - 我对 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

这给了我一个错误,与 'no such file or directory' 类似。是的,这是第 1 个问题。

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

wc -l *

效果很好。现在我想将此信息保存到一个文本文件中,该文件保存到我当前的工作目录中并命名如下:'todays-date'_wordcount.txt,类似 2015-11-10_wordcount.txt。恐怕我也真的不知道该怎么做。

我希望将日期作为变量而不只是写出来的原因是我打算 运行 这个 shell 脚本作为 cron 作业每天一次,正如我设置的建立一个自动数据收集脚本,这个 shell 脚本用于计算上次迭代中收集了多少数据。如果你们能帮助我,那就太棒了!非常感谢。

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

todays_date=$(date '+%F')

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

cd "$todays_date"

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

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