排除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 "/(\.)+[^/]+$"