shell - 关于 : extracting *. gz 文件并将原始文件移动到其他文件夹

标签 shell centos gunzip

我对 shell 脚本几乎是新手,但不知道一些命令。
我正在尝试在 shell 脚本下面写,请给一些指导。
1. 从特定目录读取 *.gz 文件
2.解压到其他文件夹
3. 将原始文件移动到另一个文件夹。
我可以做三个单独的 shell 脚本,但我希望它包含一个 shell 脚本。然后这个脚本将是 cronjob 并且每 5 分钟运行一次。
我试图从下面开始,但不知何故我有点困惑如何获取文件列表。我可以在这里做另一个脚本,但想包含在一个脚本中。”

#!/bin/bash

while IFS= read file; do
    gzip -c "$file" > "zipdir/$(basename "$file").gz"
done < filelist
-----------------------------------------

PS:文件每 5 分钟创建一次。

最佳答案

有几种方法可以实现您正在寻找的东西(我会考虑 notify )。无论如何......这是一个非常简单的实现:

$ source=~/tmp/source   # directory where .gz files will be created
$ target=~/tmp/target   # target directory for uncompressed files
$ archive=~/tmp/archive # archive dir for .gz files
$ shopt -s nullglob     # avoid retiring unexpanded paths
$ for gz in ${source}/*.gz ; do gzip -dc "$gz" > ${target}/$(basename "$gz" .gz) ; mv "$gz" ${archive}/ ; done
$ shopt -u nullglob     # reset nullglob

如果您确定“源”目录将始终包含 .gz 文件,则可以避免使用 shopt。

另一个解决方案(不需要 shopt)是这样的:
find ${source} -name '*.gz' -print0 | while read -d '' -r gz; do
    gzip -dc "$gz" > ${target}/$(basename "$gz" .gz)
    mv "$gz" ${archive}/
done

第一行看起来有点复杂,因为它管理包含空格的源文件名......

关于shell - 关于 : extracting *. gz 文件并将原始文件移动到其他文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35401363/

相关文章:

bash - 如何将 'reset' bash 恢复为出厂设置 - MacOS Sierra

bash - 命令替换不适用于 makefile 中的 echo

php - CentOS7上命令行运行php

ant - 指向新 Ant 的更改

javascript - AJAX 响应提供损坏的压缩 (.tgz) 文件

linux - 从字符串中压缩

linux - bash 时未找到错误命令

php - 在 CentOS 6.3 上安装 PHP 5.4.11 和 MySQL 5.6.10 时出现问题

string - 从golang中的字节数组解压gzip

bash - 一个正确的 "forward"如何在 bash 中运行参数?