排除locate中的隐藏文件

我们有一个Ubuntu NAS与一些Mac共享SMB和Netatalk,我经常使用locate来查找我的文件。 不幸的是,自从安装Netatalk以来,它已经编写了大量的.AppleDouble缓存文件以便更快地与AFP共享(我假设)并且我的locate打印所有这些信息。 我经常在文件上使用cp才发现我在意外时复制了一个无用的隐藏文件。

我一直在使用locate -i filename | fgrep -v ".AppleDouble" | fgrep -v "._" locate -i filename | fgrep -v ".AppleDouble" | fgrep -v "._" locate -i filename | fgrep -v ".AppleDouble" | fgrep -v "._"删除那些隐藏文件,但我想以这样的方式更改我的bashrc ,这或多或少是默认的。

从匹配打印的内容中排除隐藏文件的最有效方法是什么? 用正则表达式? 现在,我会写一个脚本,传递一个参数来定位和管道grep如图所示,但如果有一个更简单的方法,请告诉我。

要在使用locate时排除隐藏文件,请尝试以下操作:

 locate -i --regex "^/absolute/path/to/the/directory/[^\.]+" 

如果目录包含..hidden..hidden...hiden ..hidden等文件,它们也将被排除。 如果您只想排除.hidden ,请从末尾删除+

 locate -i --regex "^/absolute/path/to/the/directory/[^\.]" 

或者简单地说(不需要扩展正则表达式):

 locate -ir "^/absolute/path/to/the/directory/[^\.]" 

编辑:编辑问题后,问题的整个含义现在不同,我的初始答案在修改后的上下文中是不正确的。 运行以下命令从locate的输出中排除所有隐藏文件(给定文件名不包含/ ):

 locate -i "file_name" | egrep -v "/(\.)+[^/]+$"