首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一次解压缩多个文件的Bash脚本

一次解压缩多个文件的Bash脚本
EN

Unix & Linux用户
提问于 2018-06-07 16:05:19
回答 1查看 198关注 0票数 2

我有一套文件:

代码语言:javascript
运行
复制
lium3@l128-37:/DATA/fr94/01 $ ls -l
total 7784
-rw-r--r-- 1 lium3 mcm1 395575 May  2  1996 fr940104.0z
-rw-r--r-- 1 lium3 mcm1 113815 May  2  1996 fr940104.1z
-rw-r--r-- 1 lium3 mcm1 186333 May  2  1996 fr940104.2z
-rw-r--r-- 1 lium3 mcm1 164854 May  2  1996 fr940105.0z
-rw-r--r-- 1 lium3 mcm1  39677 May  2  1996 fr940105.1z
-rw-r--r-- 1 lium3 mcm1 284948 May  2  1996 fr940105.2z

我希望一次把它们全部解压缩(这只是一个样本!)

我试过这个

代码语言:javascript
运行
复制
find -name '*.0z' -exec sh -c 'uncompress  "${1%.*}" "$1"' _ {} \;

刚刚得到:

代码语言:javascript
运行
复制
gzip: ./fr940125.gz: No such file or directory
gzip: ./fr940125.0z: unknown suffix -- ignored
gzip: ./fr940106.gz: No such file or directory
gzip: ./fr940106.0z: unknown suffix -- ignored

我有许多目录中有这样的文件。

如果我可以得到一个脚本来执行一个目录,那么是否可以通过目录递归地执行它呢?

EN

回答 1

Unix & Linux用户

发布于 2018-12-10 23:16:47

看起来你有两个问题:

1:您的${1%.*}结果是文件的基本名称(例如fr940125),因此解压缩尝试添加默认后缀.gz,对于它尝试的合并的新文件名,不存在任何文件。

2:您提供了第二个参数来解压缩,这是存档的正确文件名,但解压缩不知道如何处理文件的结尾。尝试将参数'-S .0z‘作为参数。

下面的命令可能是正确的,可以递归提取当前目录和所有子目录中的所有.0z文件:

代码语言:javascript
运行
复制
find -name '*.0z' -exec sh -c 'uncompress  -S .0z "$1"' _ {} \;
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/448462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档