到目前为止,我已经想出了如何使用find递归解压缩所有文件:
find . -depth -name `*.zip` -exec /usr/bin/unzip -n {} \;
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何在提取后一次删除一个zip文件.在-a -exec中添加rm*.zip会在提取之前删除每个目录中的大多数zip文件.通过包含rm命令的脚本(使用-i启用测试)管道导致找不到任何*.zips(或者至少是它所抱怨的).当然,在许多文件名中都有空格,但此时在sed命令中添加_的语法有点超出我的意思.谢谢您帮忙!
ggi*_*oux 11
你有没有尝试过:
find . -depth -name '*.zip' -exec /usr/bin/unzip -n {} \; -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)
要么
find . -depth -name '*.zip' -exec /usr/bin/unzip -n {} \; -delete
Run Code Online (Sandbox Code Playgroud)
解压后运行第二个查找
find . -depth -name '*.zip' -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)
小智 8
thx用于-delete的第二个命令!帮助了我很多..只有2个(可能是有用的)来自我方的评论:
- 在我的debian系统上使用' .zip'而不是` .zip`
-use -execdir而不是-exec >这将提取其当前文件夹中的每个zip文件,否则您最终会调用您调用find cmd的目录中的所有提取内容.
找 .-depth -name'*.zip' -execdir/usr/bin/unzip -n {} \; -删除
THX&Regards,Nord
如上所述,这应该有效。
寻找 。-深度-名称'*.zip' -execdir unzip -n {} \; -删除
但是,请注意两件事:
更安全的解决方案可能是将解压缩后的文件移动到一个单独的目录,当您确定已成功提取所有文件时,您可以将其丢弃。