gpt4 book ai didi

Linux/Bash - 为 "find"创建循环以输出到文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:52:36 29 4
gpt4 key购买 nike

很抱歉,如果有人回答了这个问题,我是 Linux 的新手,但我在这里没有看到任何符合目标的内容。

无论如何,我正在运行这个命令:

find 2013-12-28 -name '*.gz' | xargs zcat | gzip > /fast/me/2013-12-28.csv.gz

问题是我需要为大约 250 个不同的日期运行此命令,因此一次执行一个非常乏味。

我想要做的是有一个脚本,它将在“查找”之后和文件名中将日期增加 1 天。我什至不知道这会是什么样子,要使用什么命令等等。

背景:

正在一个充满文件夹的文件夹中使用查找命令,每个文件夹包含 1 天的数据。每天的文件夹包含 24 个子文件夹,每个子文件夹包含大约 100 个 gzip 压缩的 CSV 文件。因此 find 命令需要从文件夹向上 2 层,因为它将扫描每个文件夹以组合所有数据。最终结果是所有压缩文件合并为 1 个大压缩文件。

如果有人能提供帮助,我们将不胜感激,否则我还有大约 250 条命令要执行,这显然很糟糕。

最佳答案

像这样的东西怎么样?

prev_date="2013-12-28"
for i in {0..250}; do
next_date=$(date -d"$prev_date +1 day" +%Y-%m-%d)
prev_date=$next_date
find $next_date -name '*.gz' | xargs zcat | gzip > /fast/me/$next_date.csv.gz
done

它应该遍历 250 个日期,例如:

2014-08-27
2014-08-28
2014-08-29
2014-08-30
2014-08-31
2014-09-01
2014-09-02
2014-09-03
2014-09-04
2014-09-05

关于Linux/Bash - 为 "find"创建循环以输出到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27303854/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com