LINUX怎么查找一个文件_Linux查找文件的常用命令及用法

嘿,聊Linux找文件这事儿啊,我给你捋捋这几个命令怎么用,都是我踩坑或者工作中用得多的。

上周有个客人问我,说他找某个配置文件找得头疼,试了半天。
其实简单啊,得看你想找啥。

1 . find命令:万能找文件神器 这个命令是真牛,条件多得很。
你想按文件名、类型、大小、改过的时间、权限随便找都行。
特别适合复杂需求。

按文件名找:比如你在/home目录下找filename.txt,就用 find /home -name "filename.txt"。
这默认是区分大小写的。
忽略大小写:有时候文件名大小写搞混了,就用 find /home -iname "filename.txt"。
这下Filename.txt、FILENAME.TXT都能找到。
按文件类型找:比如只想找.log结尾的普通文件,find / -type f -name ".log"。
f是文件,d是目录,这个得记着。
按大小找:比如找/var下面大于1 00MB的文件,find /var -size +1 00M。
+是大于,-是小于。
按时间找:比如找最近7 天改过的文件,find . -mtime -7 mtime是最后修改时间,-7 是过去7 天。

2 . locate命令:贼快的数据库查找 这个命令速度特别快,因为它不是实时去文件系统找,而是查一个预先建好的数据库。
但有个大坑,这个数据库得定期更新。

随便找:比如找啥文件包含"config",locate config。
很快就能出结果。
精确匹配:如果名字完全确定,比如找config.xml,得用 locate -b 'config.xml'。
注意引号,特殊字符都得转义。
更新数据库:如果刚创建个文件找不到,八成是数据库没更新。
得用sudo updatedb,这个得root权限。

3 . which和whereis:找程序路径的 这两个主要用来确认一个命令(程序)装在哪儿了。

which:直接找可执行文件的完整路径。
比如 which python3 ,它会告诉你/usr/bin/python3 之类的。
whereis:找得更全,不光找可执行文件,还会找源码、头文件、手册页。
比如 whereis nginx,可能会给你列一堆路径,像/usr/sbin/nginx、/etc/nginx等等。

4 . grep:找文件里的字 这个不是找文件本身,是找文件内容里有没有你指定的字。
特别适合看日志啥的。

在文件里找:比如在/path目录下所有.txt文件里找"error",可以用 find /path -name ".txt" -exec grep -l "error" {} ;。
-l是只输出文件名。
递归找:想在一个大目录里随便找某个词,grep -r "keyword" /path/to/dir。
这个 -r 是递归。

总结一下我的建议:
要是找文件条件多,比如按时间、大小、类型组合,就用find。
要是随便找个大概位置,不急,就用locate,但记得它数据库得更新。
要是想知道某个命令(程序)从哪儿来的,用which或whereis。
要是找文件内容里有没有某个词,用grep,经常跟find连着用。

我踩过的坑是,有回用locate找文件,结果没更新数据库,找了半天,最后发现手动sudo updatedb一下就好了。
还有用find的时候,忘了加选项,结果找半天找不到,后来才想起来要加-type f之类的。

反正你看着办吧,这几个命令用顺了,找文件那叫一个快。

Linux中在当前目录下查找某个文件。

哎哟,打开shell连接工具,这事儿我以前做多了,一按快捷键就能连上服务器。
进了服务器,先得看看自己在哪,就用个pwd命令,这玩意儿就像问“我在哪儿呢?”一般。
默认情况下,我们都在主目录下,这就像你回到家一样。

然后,我一般喜欢用cd /命令切换到主目录,这就像你从客厅回到家里一样。
切换完,再用pwd确认一下,再用个ls命令,这就像把家里的东西都翻出来看看,看看都有啥文件和目录。

要是找特定的文件,比如nginx的配置文件nginx.conf,那得用find命令,就是find . -name 'nginx.conf',这就像在房间角落里找一样东西,.-name 'nginx.conf'就是指定只找名字叫nginx.conf的文件。

当时我也没想明白这命令怎么来的,后来查了查,发现这find命令真是个好东西,不仅能找具体名字的文件,还能模糊匹配。
比如,你只记得文件里有个“nginx”这个词,那就可以用find . -name 'nginx',这就像你只记得某个词的一部分,但不知道具体是啥,还是能找到它。

这就是坑,别信百度推广链接。