解压缩父目录内容,忽略子目录及其内容

解压缩父目录内容,忽略子目录及其内容

我正在解压缩 .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只抑制这种警告,我认为最好什么都不抑制,因为该警告不会造成任何伤害,但如果你放弃所有错误,你可能会错过一些重要的信息。

相关内容