【问题标题】:How to write a shell script counting all lines in all files in a given folder?如何编写一个shell脚本来计算给定文件夹中所有文件中的所有行?
【发布时间】:2015-11-14 16:30:43
【问题描述】:

我手头有一项复杂的任务,而且 - 我不得不承认我的耻辱 - 对 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 脚本是否可以计算上一次迭代中收集了多少数据。如果你们能帮助我,那就太棒了!提前非常感谢。

【问题讨论】:

    标签: linux bash shell word-count


    【解决方案1】:

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

    todays_date=$(date '+%F')
    

    您可以直接将变量与cd 一起使用,不需要echo

    cd "$todays_date"
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      • 2019-03-28
      相关资源
      最近更新 更多