从多个目录解压同名文件

从多个目录解压同名文件

我的文件archive.zip位于多个目录中,即:

dir/001/archive.zip
dir/002/archive.zip
dir/003/archive.zip
...

有没有一种方法可以archive.zip使用命令行递归地解压所有具有不同名称的目录中的所有文件? ZIP 文件的内容应提取到 ZIP 文件所在的同一目录中。

dir文件夹是通用的,只是父文件夹的archive.zip名称不同。

先感谢您!

答案1

这看起来像是一份工作find。切换到目录dir,并发出以下命令:

find . -type f -name "archive.zip" -execdir unzip {} \;
  • 这将搜索以当前( ,在您的情况下.等于)开头的所有目录,以查找名称为 的文件( )。dir-type farchive.zip
  • unzip {}如果找到,它将在找到文件的目录 ( -execdir)中执行命令,并{}引用找到的文件的名称(find将替换为实际文件名 - 在本例中为archive.zip)。

它与说...具有相同的效果cd 001/; unzip archive.zip; cd ..; cd 002/; unzip archive.zip(我想你明白了)。

笔记终止;要执行的命令确实必须用 a 转义\,否则 shell 会在到达 之前对其进行解释find

另外,如果dir/目录本身可以包含archive.zip不想提取,您必须-mindepth 1在起始点之后添加参数,.以确保find仅考虑从下面的第一个子目录级别开始的文件dir/

相关内容