【问题标题】:How to ignore or exclude backup files [files ending with ~] in shell other than using regular expressions?除了使用正则表达式之外,如何在 shell 中忽略或排除备份文件 [以 ~ 结尾的文件]?
【发布时间】:2018-05-11 05:42:33
【问题描述】:

例如,如果我想获取路径中所有文件的md5checksum。

$ find /path/to/ -type f -print0 | xargs -0 md5sum

但输出还包括备份文件的校验和。一般来说,有什么方法可以忽略 shell 中的备份文件?

【问题讨论】:

  • 为什么不想在正则表达式自然适合的上下文中使用它?
  • find /path/to/ -type f ! -name "*~" -print0

标签: linux bash shell find


【解决方案1】:

只需告诉find 将找到的名称限制为不以波浪号结尾的名称:

find /path/to/ -type f ! -name '*~' -exec md5sum {} +

这不使用正则表达式(*~ 是文件名通配模式)。

【讨论】:

    【解决方案2】:

    在 Unix shell 上下文中通常具有特殊含义的唯一文件名模式是以点 . 开头的名称。对于默认的 shell 扩展,这些文件通常被认为是“不可见的”。

    不同的应用程序使用不同的名称模式来指示它们认为是“备份文件”的内容(波浪号开头为 ~ 或名称,结尾为 .backup 扩展名等)。除非此类应用程序还使用特定(非标准)文件属性标记此类文件,否则区分它们的最简单方法是为给定类型的备份文件提供特定的文件名模式或通配符。

    在您的情况下,find 接受文件名模式作为常规参数:-name "*~"

    【讨论】:

      猜你喜欢
      • 2014-03-18
      • 2021-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多