locate
locate可以快速进行查找linux服务器上的资源,并进行定位。一般情况下我是很倾向于使用这个命令的。
但是当服务器上的文件是刚上传的,或者刚有人cp执行了复制后,locate是无法查找到文件的位置的,因为索引上没有(索引没有更新,索引的更新是服务器上的定时任务进行更新的)
如果可以,通过update.db进行服务器索引手动更新可以解决,但是这个需要root权限,开发一般是没有服务器上的root权限的,所以这个方法有时候不那么奏效。
find
find的命令按理说是可以查找到新增的文件的。
但是经过测试,如果系统对指定目录进行了缓存,find在缓存更新前执行,则无法查找到刚上传的服务器上的文件。
所以使用find的时候要结合其他命令,手动的强制刷新一下缓存,让系统看到新增的文件。
find / -type f -name "test.xlsx" 2>/dev/null -exec echo {} \;
find查找后,将错误信息吐到黑洞,匹配到的结果通过echo输出到{}中进行打印。
-exec 选项本身并不会直接刷新缓存,当 find 命令结合-exec 时,会执行指定的命令来处理每个找到的文件,而不管系统是否对文件系统进行了缓存。