![gunzip 多个档案到特定文件夹](https://linux22.com/image/1497767/gunzip%20%E5%A4%9A%E4%B8%AA%E6%A1%A3%E6%A1%88%E5%88%B0%E7%89%B9%E5%AE%9A%E6%96%87%E4%BB%B6%E5%A4%B9.png)
是否有可能将多个文件压缩到一个文件夹中?
我有很多访问日志需要提取到文件夹中。/var/log/nginx/
它们被放置在文件夹中,并且被命名为access.log.2.gz
但是有一个棘手的问题...我需要该文件夹中某个特定月份的所有档案。
有很多这样的访问日志,我需要将它们提取到目录中/var/log/nginx/target
我已经测试过了
for f in *.gz; do
STEM=$(access.log. "${f}" .gz)
gunzip -c "${f}" > /var/log/nginx/target/"${STEM}"
done
但根本不起作用。
答案1
我认为您的代码的问题很可能是 STEM 的计算。我暂时不清楚您的文件格式或您将如何对它们进行分组,但请尝试以下方法:
# Find files created within date range:
fromdate="201606010000"
todate="201606302359"
touch -t $fromdate /tmp/fromdate.del
touch -t $todate /tmp/todate.del
# Extract only the desired files to destination, removing the .gz extension
for f in `find /var/log/nginx/*.gz -type f -newer $fromdate ! -newer $todate`
do
zcat $f > /var/log/ngiz/target/${f::-3}
done
答案2
假设您不知道哪些日志包含六月:
zcat *gz | grep Jun > junelog