我试图find在 linux 中执行时排除隐藏的文件和文件夹。
我必须排除以点 (.hidden) 开头的文件或文件夹,但也必须排除以 @ 开头的文件夹(如 @eaDir)。
到目前为止,我有以下命令似乎有效,但也许有更优雅的方法?
find /path/to/start/search/ -not -path '*@eaDir*' -not -path "*/\.*" -type f -mtime -2
Run Code Online (Sandbox Code Playgroud)
我确实看到了使用正则表达式的示例,如下所示:
find . \( ! -regex '.*/\..*' \) -type f
Run Code Online (Sandbox Code Playgroud)
但不确定如何使用@eaDir该-regex选项排除目录?
我相信也可能存在以两个点开头的隐藏文件?就像“..隐藏”?我的命令是否已经涵盖了这一点,或者我是否只是添加第三个选项(例如-not -path "*/\..*"也排除这些选项)?
然后我看到了一些使用示例-prune,以便 find 不会下降到隐藏目录中,但是我不确定如何在我的示例中使用这个正确性。我对此很感兴趣,以加快速度。
谢谢!
排除以 a.或 开头的文件和文件夹@:
find /path/to/start/search/ -not -path '*/[@.]*' -type f -mtime -2
Run Code Online (Sandbox Code Playgroud)
排除以 a 开头的文件.以及以 a.或 an开头的文件和文件夹@:
find /path/to/start/search/ -not -path '*/.*' -type f -mtime -2 | grep -v '/@.*/.*'
Run Code Online (Sandbox Code Playgroud)