定位命令返回的结果太多
我错误地将相同的文件复制到不同的分区,以便稍后从源或目标中修剪(删除)它们。 现在,当我尝试找到它们时,我从locate
命令获得了太多结果:
rick@alien:~$ locate "display-auto-brightness" /etc/cron.d/display-auto-brightness /home/rick/Pictures/display-auto-brightness conky.png /home/rick/Pictures/display-auto-brightness systray.png /home/rick/Pictures/display-auto-brightness-config 1.png /home/rick/Pictures/ps display-auto-brightness.png /lib/systemd/system-sleep/display-auto-brightness /mnt/e/etc/cron.d/display-auto-brightness /mnt/e/lib/systemd/system-sleep/display-auto-brightness /mnt/e/usr/local/bin/display-auto-brightness /usr/local/bin/display-auto-brightness
locate
命令会自动将*
通配符放在搜索字符串后面,并返回额外的不需要的结果。 不应返回.png
文件。
为什么locate
返回太多结果?
locate
命令会自动将*通配符放在搜索字符串后面,并返回额外的不需要的结果。
这是locate
的默认行为。 见man locate
:
If any PATTERN contains no globbing characters, locate behaves as if the pattern were *PATTERN*.
要仅匹配文件名,请在路径组件中显式设置glob:
locate '*/display-auto-brightness'
或者使用正则表达式和--basename
选项来匹配确切的文件名:
locate --basename --regex '^display-auto-brightness$'
或者,根据您显示的结果,您可以在最后询问包含display-auto-brightness
路径:
locate --regex 'display-auto-brightness$'
我将让你在循环遍历目录中每个文件名的脚本中使用它。