【问题标题】:Exclude hidden files and folders in linux find排除linux查找中的隐藏文件和文件夹
【发布时间】:2020-03-12 16:04:21
【问题描述】:

在 linux 中执行 find 时,我试图排除隐藏文件和文件夹。

我必须排除以点 (.hidden) 开头的文件或文件夹,但也必须排除以 @ 开头的文件夹(如 @eaDir)。

到目前为止,我有以下命令似乎有效,但也许有更优雅的方式?

find /path/to/start/search/ -not -path '*@eaDir*' -not -path "*/\.*" -type f -mtime -2 

我确实看到了使用正则表达式的示例:

find . \( ! -regex '.*/\..*' \) -type f

但不确定如何使用 -regex 选项排除 @eaDir 目录?

我相信也可以有以两个点开头的隐藏文件?像“..隐藏”?这是否已经包含在我的命令中,还是我会简单地添加第三个选项,如 -not -path "*/\..*" 来排除这些?

然后我看到了一些使用-prune 的示例,以便 find 不会下降到隐藏目录中,但是我不确定如何在我的示例中使用此正确性。我会对此感兴趣以加快速度。

谢谢!

【问题讨论】:

标签: linux shell find


【解决方案1】:

使用-not -name '.*'。这将排除任何以. 开头的名称。

【讨论】:

    【解决方案2】:

    排除以.@ 开头的文件和文件夹:

    find /path/to/start/search/ -not -path '*/[@.]*' -type f -mtime -2
    

    排除以. 开头的文件以及以.@ 开头的文件和文件夹:

    find /path/to/start/search/ -not -path '*/.*' -type f -mtime -2 | grep -v '/@.*/.*'
    

    【讨论】:

    • 谢谢,效果很好,而且比我最初的命令更流畅!现在我只需要弄清楚-prune 选项。
    • find /path/to/start/search/ -prune -not -name '.*' -type f -mtime -2 | grep -v '/@.*/.* 我猜? (未经测试)
    猜你喜欢
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 2018-12-13
    • 2012-01-21
    • 2021-03-08
    相关资源
    最近更新 更多