**已关闭。**此问题为not about programming or software development。目前不接受回答。
此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site的主题相关,可以发表评论,说明在何处可以回答此问题。
上个月关门了。
社区上个月审查了是否重新打开这个问题,并将其关闭:
原始关闭原因未解决
Improve this question的
我已经尝试了一段时间,并相信我相当接近这一点,但我是相当新的Unix,所以一直觉得这很困难。
我有一个文件夹,包含许多文件夹,其中一些有zip文件,有些没有。我试图解压缩所有的zip文件在任何子目录的地方。
例如,我有:
files/A/something.java
files/B/somezipfile.zip
files/C/someotherfile.zip
files/D/AnotherZipFile.zip
我想解压缩它们(假设压缩包只包含.java文件),得到如下结果:files/A/something.java
files/B/javafile.java
files/C/someotherfilefromzip.java
files/D/Anotherfile.java
我不介意如果ZIP文件仍然存在或解压后被删除,无论是罚款。
到目前为止我所尝试的。
1.我希望我可以使用管道,我是新的,像这样:
find . -name *.zip | unzip
字符串
这不管用
1.我花了一些时间搜索,我在网上找到的最接近的解决方案是:
find . -name '*.zip' -exec unzip '{}' ';'
型
这个解压,但解压到当前的工作目录,我想他们解压到位。我也不明白这个命令,我想,因为我正在努力学习。
4条答案
按热度按时间jxct1oxe1#
字符串
此命令在当前目录及其子目录中递归查找名称与
*.zip
模式匹配的文件。对于找到的文件,它执行带有两个参数的命令sh
:型
和
型
其中
<filename>
是找到的文件名。命令sh
是Unix shell解释器。选项-c
告诉shell下一个参数应该被解释为shell脚本。因此shell解释以下脚本:型
在运行
unzip
之前,shell通过执行各种替换来扩展命令。型
命令
dirname <filename>
的输出实际上是输出文件所在的目录名。因此,如果文件名是./a/b/c/d.zip
,shell将像这样运行unzip
:型
如果您的ZIP文件名或目录名有空格,请使用以下命令:
型
vjhs03f72#
使用
-execdir
而不是-exec
,这会在找到文件的目录中运行命令,而不是在运行find
的目录中运行命令。字符串
b4qexyjb3#
字符串
bzzcjhmw4#
您可能希望将每个
foo/bar.zip
文件中包含的文件解压缩到foo/bar/
目录下。字符串