【发布时间】:2011-08-01 05:08:40
【问题描述】:
到目前为止,我已经弄清楚如何使用 find 递归解压缩所有文件:
find . -depth -name `*.zip` -exec /usr/bin/unzip -n {} \;
但是,我不知道如何在提取后一次删除一个 zip 文件。在 -a -exec 中添加 rm *.zip 最终会在提取之前删除每个目录中的大部分 zip 文件。通过包含 rm 命令的脚本(启用 -i 以进行测试)导致 find 找不到任何 *.zips (或者至少这是它所抱怨的)。当然,许多文件名中都有空格,但此时在 sed 命令中添加 _'s 的语法有点超出我的能力。感谢您的帮助!
【问题讨论】:
-
你是什么意思
recursively,zip in zip?对于复杂的任务,我个人会编写一个帮助脚本(比如unzip-and-rm.sh)并 -exec 该脚本。 -
如果我不够清楚,我深表歉意。目录树至少向下六或七级,而 zip 文件位于最深的级别。每个 zip 文件都包含另外两个文件,我希望保持其他文件不变,然后删除 zip 文件。我最初的尝试只是将
unzip-and-rm插入脚本并执行它,但它找不到任何 zip 文件,我怀疑这是由于文件名中的空格造成的。 -
我不知道为什么
it fails to find any zip files,我不敢相信,你能粘贴命令行吗? -
如果您想了解更多信息,请查看stackoverflow.com/a/51841035/2457251 的答案。例如,您可以将命令
rm $f、mv $f添加到 .sh 文件中 - 或添加任何其他命令,如果您愿意。