我今天在面试中遇到了这个问题。
例如,我想要的文件1.txt
位于/data/users/xxx/u/a/b/c/1.txt
中。现在,我只记得我想要的文件的绝对路径有后缀a/b/c/1.txt
。在我的系统中可能有很多不同的1.txt
。
我应该使用哪个shell命令来查找具有此模式的命令。
find
的-wholename
选项允许您指定路径名组件以及用于定位文件系统中文件的glob。您应该尽可能地调整启动目录,但如果您真的不知道文件的位置,可以从/
开始。
在这种情况下,你可以做:
find / -type f -wholename "*a/b/c/1.txt"
您也可以使用默认情况下使用-wholename
匹配的locate
(mlocate(。locate
的等效搜索为:
locate "*/a/b/c/1.txt"
需要注意的是,updatedb
必须在创建文件后运行,才能位于mlocate.db
中。否则,将找不到具有locate
的文件。(还要注意,默认情况下,所有Linux发行版都不会在中安装locate
(