一、背景
由于某种原因,需要手工处理错误日志提取某些信息。
下载下来的日志文件是压缩包
1.1 文件信息
1 | system_error.log.2020-11-01.20201105200433.zip |
1.2 压缩包信息
1 | $ unzip -v system_error.log.2020-11-01.20201105200830.zip |
压缩包文件名不一样,但是压缩包中的文件有一样的名字。
例如:system_error.log.2020-11-01
尝试使用如下方式,提示有重复,需要挨个选择如何处理,极度不便。
于是想使用 shell 来解决( 之前没写过 shell )
1.2 尝试过程
提示有文件重复,需要处理。
1 | $ unzip '*.zip' |
尝试使用 -n 参数,不覆盖
1 | $ unzip -n '*.zip' |
-n 表示不覆盖,有重名的直接跳过,结果就是 100 个文件只解压的 10 个。
1.3 怎么解压并且重命名?
1 | mv A B |
怎么拿到压缩包内的文件名?
1 | # 输出压缩包内的信息 |
二、脚本信息
1.3 的问题解决了就可以开始写脚本
2.1 脚本
文件名 uf.sh
1 | !/bin/sh |
2.2 使用方法
注意,目前在目标目录下才能正确运行
1 | chmod 775 uf.sh |
然后解决问题,解压所有 100 个压缩包,并且得到 100 个文件(文件名为 1~100)。
三、总结
不得不说解决问题是最快的学习方式
第一次写脚本相对耗时,也是一个不错的尝试过程。
对linux系统相关的命令/函数不熟悉,导致到处查资料,有必要系统化的看看书。
四、参考信息
- shell 命令解压缩zip文件夹并且对解压后的文件重命名(批量)
ps:没有提供注释,对新手不太友好 - shell中变量自增
- Shell 截取文件名和后缀