我正在解压缩 .zip 文件。我可以这样做,但我要求仅提取父文件夹数据,忽略任何子目录及其内容。
以下是 zip 文件的名称格式。
文件名.csv.zip
我使用过的命令 unzip -j /zip_filepath "*" -d /final_directory.
我尝试使用上述命令,但上述命令提取了作为 zip 文件一部分的所有完整 zip 内容。
请在下面找到 zip 文件的文件结构。
- -rw-r--r-- abc.csv
- drwxrwxr_x __MACOSX/
- -rw-r--r-- __MACOSX/_abc.csv
第二个 zip 文件结构:*-rw-r--r-- xyz.csv
我只想从 zip 文件中提取 abc.csv 和 xyz.csv 文件。
输出:解压-Z -1 abc.zip
__MACOSX/
__MACOSX/_abc.csv
abc.csv
输出:解压 -Z -1 /user/sam/abc.zip -d /user/sam/2019-05-22/
caution: not extracting -d ignored
abc.csv
__MACOSX
__MACOSX/._abc.csv
这里的输出应该只是 abc.csv 文件
输出:解压-Z -1 xyz.zip
xyz.csv
输出:解压 -Z -1 /user/sam/xyz.zip -d /user/sam/2019-05-22/
caution: not extracting -d ignored
xyz.csv
答案1
您可以使用-x
选项'*/*'
作为参数,如下所示:
unzip filename.csv.zip -x '*/*' -d /final_directory
caution: excluded filename not matched: */*
如果您想在与您的文件类似的情况下抑制警告xyz.zip
,您可以使用:
unzip filename.csv.zip -x '*/*' -d /final_directory 2> /dev/null
笔记:请记住,这将抑制所有标准错误输出。最好指示unzip
命令不显示那种警告(仅那种警告),...我快速浏览了它的手册,但没有看到任何选项。所以,在你的情况下,如果不可能指示unzip
只抑制这种警告,我认为最好什么都不抑制,因为该警告不会造成任何伤害,但如果你放弃所有错误,你可能会错过一些重要的信息。