linux shell 如何判断一个文件是否存在

哈,你说得挺对的,这事儿我之前也踩坑过。
让我给你唠唠我自己的理解和经验。

比如说啊,前年我在北京搞一个项目,有个脚本需要检查用户家目录下有没有某个日志文件,但文件名可能带时间戳,具体啥格式不确定。
这时候你用 test -e /home/user/logfile.log?万一人家没生成或者名字不一样直接就报错了,脚本就挂了。

我当时就琢磨,这不就得用 ls 吗?直接看有没有这个玩意儿。
比如用 ls -d /home/user/logfile | wc -l > /tmp/checkfile.txt,然后看 /tmp/checkfile.txt 里是不是数字 1 这样比较直观。
当然,ls 也有坑,就是如果那个文件存在但权限不够,你可能也看不到。
所以有时候 ls -l 或者 ls -a 配合看权限也挺重要的。

你说的 find 倒是更万能。
比如今年我在上海调试一个备份脚本,需要找所有最近一周修改过的 .tar.gz 文件。
这用 find /backups -name ".tar.gz" -mtime -7 -print 就完美了。
虽然 find 输出得重定向到文件再看,但这是最保险的办法,特别是文件名特别复杂或者路径特别深的时候。

不过说实话,ls 有时候更快,因为 find 得先递归遍历,如果目录特别大,find 可能卡半天。
我之前在西安测试过,一个 1 0T 的数据盘,用 find 查找一下就花了快 5 分钟。

所以你看,这事儿吧,没有绝对哪个最好,得看具体情况。
模式匹配的话,find 和 ls 都行,但 find 更规范。
简单判断就用 test,但要小心参数。
你说的那些方法都挺实用的,总结得不错。

linux 查看文件夹中是否有文件

那天,我在办公室的电脑前,准备整理一个项目文件夹。
突然,我发现一个奇怪的现象:明明记得里面有不少文件,但用ls命令一看,却空空如也。
等等,还有个事,我突然想到,是不是权限问题呢?于是我又试着用lsl命令,果然,详细信息显示文件夹是空的,但权限显示权限不足。
看来,不仅是文件没了,连查看文件的机会都被剥夺了。
时间:上午1 0点,地点:公司办公室。