【问题标题】:Cygwin shell 'find' 'unzip' can't seem to get filtered off lines to not get passed to unzipCygwin shell 'find' 'unzip' 似乎无法过滤掉行以不传递给 unzip
【发布时间】:2015-03-02 14:27:15
【问题描述】:

在 Cygwin 64bit 中,我有这个命令可以执行我想要的操作:

$ find -name '*.zip' | wc -l
90

我尝试将结果传递给解压缩,使用Find all zips, and unzip in place - Unix中的方法:

$ find -name '*.zip' -execdir unzip -t '{}' ';' | wc -l
...random paths with the error continuing from "central" filename version...
17605 #?!?, why not 90 like before?

欣赏一些针对这个小问题的智慧。

【问题讨论】:

    标签: shell unix find


    【解决方案1】:

    您将获得不同的计数,因为使用unzip -t 将测试存档提取并将列出.zip 文件中的每个文件,因此您将获得更多输出,而不仅仅是.zip 文件的名称。

    您可能是指这个find 命令:

    find -name '*.zip' -execdir unzip '{}' ';' -print | wc -l
    

    【讨论】:

    • 还没有完全解决,但想法可能是我设想的解决方案的正确轨道:只打印 name.zip 输入的每个 zip 文件都可以。也不能投票给你的答案,似乎是我的声誉有点低:(。
    • 再三思考你的输入对我在问题中提出的问题有意义,即使它不能解决我最初的问题。谢谢。
    【解决方案2】:

    在阅读了更多关于 unzip 的文档后,我发现以下 2 中的第二个命令可以解决我最初的问题:

    find -name '*.zip' -execdir unzip -t '{}' ';'  #every file in every zip
    find -name '*.zip' -execdir unzip -tq '{}' ';' #one consolidated answer per zip
    

    【讨论】:

      猜你喜欢
      • 2015-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多