linux中怎么查看文件是否存在?

老实说,这两种方法各有各的优点。
我是在系统运维的时候切换的。

首先我们来谈谈搜索命令。
这个东西确实是Linux中的一个老工具,对于需要临时定位特定文件的情况特别有用。
我记得有一次系统出现问题,日志文件被移动到临时目录。
我直接使用find /tmp -name "log" -type f ,它立刻就找到了,省去了手动互相查找的麻烦。
语法非常简单,只是一个目录加上规则和操作,就像搭积木一样。
但如果用得太频繁,就会发现规则复杂,而且容易被蒙蔽。
例如,当我搜索特定用户创建的文件并添加权限条件时,我通常会用笔和纸创建一个逻辑表,然后输入命令。

有趣的是shell脚本,它更像是一个长期的解决方案。
我之前有一个监控任务,每天都要检查几个重要的日志文件是否宕机。
用手肯定不行。
编写一个脚本并每天运行一次将是完美的。
判断文件是否存在的脚本示例特别经典。
我已经使用这种写法[ -e /temp/test.log ]十年了,从未犯过错误。
然而,缺陷是没有引用脚本变量。
例如$var的内容是路径,有时会出现解析错误,需要改为“$var”。
当我第一次遇到这个的时候,我困惑了很长一段时间,以为脚本坏了。

最常使用两种方法的组合。
例如,使用 find 首先搜索一组文件,然后使用脚本来浏览和处理它们。
或者脚本使用“查找”创建文件列表并将其留给其他工具。
上次做备份监控任务时,我使用“查找”找到一年前的所有备份文件,然后使用脚本循环将文件名更改为时间戳格式,然后传输它们。
尽管如此,Linux 生态系统依赖于这些小工具的组合。
没有一种方法是万能的。
只需根据场景选择工具即可。

Linux怎么查找文件

哎哟,我知道这些东西。
我在华为的时候,服务器上的文件非常多,每天搜索文件都是例行公事。

如果您指的是 find 命令,那就太棒了。
我记得那是哪一年,大概是2 01 8 年。
我们有一个项目部署脚本找不到某个配置文件,所以它在/etc/config下徘徊。
我一看,哦,直接找到了/etc/config -name "project_config.ini",一晃就找到了。
这东西太强大了,你可以找到名称、类型、时间、大小,无论你想要什么。
只是有点慢。
有时需要半天时间才能找到一个几GB的分区。
但如果你准确地知道名字,它是最快的。
如果我找到它,看起来它当时在实验室的 Ubuntu 机器上使用得更多,大概是 2 01 9 年。
sudoupdatedb 数据库更新命令每次都必须等待它完成运行。
但如果你在整个机房里搜索某个文件,找到test.log,转眼间就会出现,这比找到要快得多。
只是有时不准确。
也许您刚刚更新了数据库并更改了文件,但它仍然找不到它。
适合您知道文件在哪里并希望快速检查它们是否在整个机器上的情况。

我可以区分地点和内容。
Whereis 专门查找已编译的二进制文件、源代码和用户手册,例如Whereis ls。
它会告诉你 ls 二进制文件在哪里,源代码在哪里,手册在哪里。
我记得调试一个编译问题,它对我帮助很大。
哪个更窄。
它只搜索 PATH 路径中的可执行文件。
比如which ls会直接告诉你/bin/ls。
你要找的是一个脚本,或者它在临时目录中,但找不到。

我很少遇到这种类型。
2 02 0年左右,有新同事问为什么ls类型的结果和哪个ls是一样的。
我向他解释说,类型决定了它是内置命令还是外部命令,并且实际上向你显示了路径。
他很困惑,但最终他明白了。

最后是grep。
这东西太重要了。
我每天都用它。
它不直接搜索文件,而是搜索文件的内容。
我记得2 01 7 年发生了一次生产事故,日志里全是错误。
我 grep -r "error" /var/log 突然发现日志中所有带有“error”的行。
或者,如果您正在查看脚本,请 grep "function_name" script.sh 来查看该函数在哪里。
这个东西旨在帮助您过滤内容,而不是查找文件本身。

一般来说,要查找文件,请使用 find 或locate。
find 功能齐全,但速度慢;定位速度快,但不准确。
要搜索可执行文件,请使用which。
使用 grep 搜索文件的内容。
其他 where 和 type 用于特定情况。
看看你具体想做什么,然后使用适合你的那个。
别开玩笑了。

linux命令学习之find命令的使用查找文件 超详细

嘿嘿,说到Linux下的find命令,可算是老朋友了。
我第一次接触它是在十年前。
我当时无法正确理解它。
现在回想起来,确实很有趣。

按名称搜索,我经常使用这个功能。
例如,如果我想查找当前目录中的所有.txt文件,并且需要区分大小写,我会写find。
-名称“.txt”。
如果想忽略大小写,加上-iname,就变成find了。
-名称“.txt”。
记得有一次,我写了一个脚本来查找所有.pem文件,并使用了多条件匹配,即查找。
-名称“.txt”-o -名称“.pem”。
感觉就像发现了宝藏一样。

根据路径匹配,这个功能也很有用。
例如,如果我想在/usr目录中查找包含local的文件,我会写find /usr -path "local"。
正则表达式匹配更强大。
例如,要查找所有以 .txt 或 .pem 结尾的文件,您可以使用 find。
-正则表达式“.\.txt|.\.pem$”。

按文件类型搜索,对我来说非常实用。
例如,如果我只想查找常见文件,我会使用-TypeF并将搜索深度限制为3 级,即-MaxDepth3 有一次,当我收到一个大于 1 0 KB 的文件时,我必须进行搜索。
-大小+1 0k。

按时间过滤,我也经常使用这个功能。
例如,使用 -atime -7 查找最近 7 天内访问过的文件。
到达那里后,我清理了服务器并查找了超过 7 天没有修改过的文件,这是-mtime +7
按文件大小过滤也很实用。
例如,使用 -size +1 0k 查找大于 1 0KB 的文件。

对于高级任务,比如删除文件,我通常使用 -delete,就像 find 一样。
-名称“.tmp”-删除。
要修改权限或所有者,我使用 -exec,就像 find 一样。
-user root -exec chown tom{};。

排除目录,我也经常使用这个。
比如我不想搜索ABC目录,就用-prune,然后用-o添加其他搜索条件,比如find。
-路径“./abc”-prune -o -名称“.txt”-print。

注意:要注意权限问题,特别是在探索 / 等系统目录时,应该使用 sudo。
性能优化(例如限制搜索深度)可以提高效率。
为了安全删除,我通常先预览一下,然后使用 -exec ls -l {};查看该文件,然后将其删除。

最后,让我们以一个例子来结束。
例如,如果我想在 /var/log 目录中查找 3 0 天前的日志文件并删除它们,我会执行 find /var/log -name ".log" -mtime +3 0 -exec rm {};会写。
我经常使用这个命令,非常方便。

总的来说,find命令的功能很强大。
如果用得好,文件管理将会变得非常轻松。

如何使用find和locate 命令在Linux 中查找文件和目录?

嘿,发现和发现……它们真的是不同的东西。

find 是一个很棒的工具,具有非常广泛的功能。
您可以指定任何您想要的条件。
例如,在 2 02 3 年,我位于一个名为 /var/log 的位置,我想找到一个名为 error.log 的文件,该文件在过去三天内被修改过,大小正好为 5 00 KB。
我可以使用 find /var/log -type f -mtime -3 -size 5 00k -name error.log。
嘿嘿,你看,说的很清楚了。

或者,如果我想查找特定用户的文件,例如 /home 目录中的 bob 文件,我使用 find /home -user bob。
保持简单。

但是搜索也有点慢,尤其是目录很多的时候。
因为你必须经历一个又一个。

然后有一个发现。
速度快多了。
它预先创建一个数据库,并且该数据库必须定期更新。
使用 sudo updateb 命令。
如果你更新数据库后再次查找某个东西,眨眼间就会出现。
例如,如果我想查找 /etc/passwd 文件,我会使用 location passwd。
它直接从数据库中搜索,速度非常快。
2 02 2 年,当我寻找特定的配置文件时,使用locate比使用find快得多。

但是这个位置有一个缺点:他发现的东西可能不是最新的。
例如,如果我更新了一个文件,但数据库尚未更新,锁定可能无法找到它。
因此,它适合搜索您可能知道名称且不是特别新的文件。

综上所述,find 功能强大,可以解决所有问题,但速度较慢。
locate速度很快,但是数据库需要更新,结果可能有点过时。
根据您使用它的时间、您要查找的系统和文件,您必须选择哪一个。
如果你选择了正确的一款,性能确实会有所不同。