CentOS 5.9
我有一个带有 foo.ext.gz 文件的服务器,该文件位于各种随机目录中。
例子:
我想运行一个 bash 命令,它将:
如果我手动执行此操作,我会从find / -iname foo.ext.gz. 之后,我将复制文件所在的目录并键入以下内容:
gunzip -c /opt/fooapp/foosubdirectory/foo_12345/blah/blah/foo.ext.gz > /opt/fooapp/foosubdirectory/foo_12345/blah/blah/foo.ext
Run Code Online (Sandbox Code Playgroud)
这里的问题是我需要为几十个文件/目录手动执行此过程。
有没有办法可以利用 xargs 或 for 循环?
尽管您可以解析 a 的输出,但find您必须处理空格等。不幸的是gunzip,没有--keep/-k标志可以保留(就像bzip2并且xz确实有)。
如果要制作一个带有gunzipkeep一个参数(gzipped 文件)并进行解压缩的小脚本,请将该脚本放在 $PATH 中的某个位置并使用以下命令调用它:
find /opt/fooapp/foosubdirectory -name "foo.ext.gz" -print0 | xargs -0 --norun-if-empty --max-args 1 gunzipkeep
Run Code Online (Sandbox Code Playgroud)
脚本可能是这样的:
#!/bin/bash
inname=$1
outname=${inname%.gz}
gunzip -c "$inname" > "$outname"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3163 次 |
| 最近记录: |