我怎样才能实现以下目标?
unzip ./zipped_docs.zip ./new_folder | mkdir ./new_folder
或者
mkdir ./new_folder | unzip ./zipped_docs.zip ./new_folder
我甚至尝试过
mkdir ./new_folder && unzip ./zipped_docs.zip ./new_folder
这些都没有起到作用,但是这个想法很明确。
这可能吗?
答案1
正确的方法是使用-command-d
中的 -optionunzip
mkdir new_folder && unzip zipped_docs.zip -d new_folder
从man unzip
:
[-d 扩展目录] 可选目录,用于提取文件。默认情况下, 所有文件和子目录均在当前目录中重新创建 tory;-d 选项允许在任意目录中提取 (始终假设有人有写入目录的权限)。
答案2
我发现file-roller
-h
当档案不包含单个顶级目录,而是一堆文件和/或目录时,标志很有用。通过使用file-roller -h
,将创建一个与档案名称匹配的新目录。
file-roller -h archive.zip
例如,archive.zip
将被提取到新创建的archive
目录中。如果使用简单的名称,可能会发生冲突,但这个想法是,您提取的档案相对来说是唯一的。
您可以使用标志指定一个目录,而不是根据档案名称自动创建此目录-e
。
file-roller -e /tmp/new_dir archive.zip
如果下一步是对目录中的一堆文件执行此操作,请注意一些常见错误,特别是循环遍历目录中的文件(即:for f in dir/
)