留解压缩的文件代替我到目前为止已经找到了如何使用find递归解压缩所有文件:递归解压缩文件,然后删除原始文件,从外壳
find . -depth -name `*.zip` -exec /usr/bin/unzip -n {} \;
但是,我不能了解如何在提取后一次删除一个zip文件。在-a -exec中添加rm * .zip最终将删除每个目录中的大部分zip文件,然后将其解压。通过包含rm命令的脚本(使用-i启用测试)进行管道操作会导致发现找不到任何* .zips(或者至少这是它所投诉的内容)。当然,在许多文件名中都有空格,但是在这个时候,在sed命令中添加_的语法有点超出我的意思。感谢您的帮助!
你是什么意思'递归',zip在zip?对于复杂的任务,我会亲自编写一个助手脚本(比如'unzip-and-rm.sh')和-exec脚本。 – 2011-04-08 04:26:39
如果我不够清楚,我很抱歉。目录树至少有六到七个级别,zip文件处于最深的级别。每个zip文件包含两个其他文件,我希望保持其他文件不变,但随后删除zip文件。我原来的尝试只是将'unzip-and-rm'插入脚本并执行它,但它找不到任何zip文件,我怀疑这是由于文件名中的空格造成的。 – Ben 2011-04-08 04:33:05
我不知道为什么'它找不到任何zip文件',我无法相信它,你能粘贴命令行吗? – 2011-04-08 04:47:13