我有一组文件:
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
我希望一次将它们全部解压(这只是一个示例!)。
我试过这个
find -name '*.0z' -exec sh -c 'uncompress "${1%.*}" "$1"' _ {} \;
刚刚得到:
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
我有很多包含此类文件的目录。
如果我可以获得一个脚本来执行一个目录,是否可以通过目录递归地执行此操作?
答案1
看起来你有两个问题:
1:您的${1%.*}
结果是文件的基本名称(例如fr940125
),因此解压缩尝试添加默认后缀 .gz,对于它尝试的组合新文件名,不存在文件。
2:你给uncompress第二个参数,这是存档的正确文件名,但是uncompress不知道如何处理文件结尾。尝试将参数“ -S .0z
”作为参数。
以下命令可能是正确的命令,用于递归提取当前目录和所有子目录中的所有 .0z 文件:
find -name '*.0z' -exec sh -c 'uncompress -S .0z "$1"' _ {} \;