【问题标题】:How to find files which do not end with ".log" in bash/shell script如何在 bash/shell 脚本中查找不以“.log”结尾的文件
【发布时间】:2013-10-03 16:19:31
【问题描述】:

我是 bash/shell 脚本的新手。 我想查找目录和子目录中不以“.log”结尾的所有文件。 我知道我可以使用以下命令来获取以“.log”结尾的文件,但我需要不以这个扩展名结尾的文件:

find /tmp/mallik5/ -iname "*.log"

我该怎么做?

【问题讨论】:

    标签: bash shell unix find


    【解决方案1】:

    这个find 表达式可以做到:

    find /tmp/mallik5/ ! -name "*.log"
    

    如果只是找文件,加-type f:

    find /tmp/mallik5/ -type f ! -name "*.log"
    

    【讨论】:

    • 不适用于基于 BSD 的查找工具,仅适用于 GNU,限制了它的可移植性。
    【解决方案2】:
    find /tmp/mallik5 -type f ! -name '*.log'
    

    【讨论】:

      【解决方案3】:

      知道 GNU Find util 是最合适的工具,您已经完成了任务。

      几个快速解决方案将是

      find /tmp/mallik5/ -not -name *.log
      find /tmp/mallik5/ ! -name *.log
      

      如果您尝试对 find 的结果采取措施,您可以尝试:

      find /tmp/mallik5/ -not -name *.log -print0 | xargs -0 rm -f 
      

      以上行帮助您查找和删除名称不以 *.log 结尾的文件

      模式匹配方面的知识是解决任务、了解更多信息的关键。 Click Here

      要了解有关 GNU find 实用程序的更多信息,visit here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-18
        • 2016-11-21
        • 2011-07-06
        • 2012-06-05
        • 2021-09-27
        • 2016-11-14
        • 1970-01-01
        相关资源
        最近更新 更多