我的文件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 f
archive.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/
。