连载中 3/20

文件操作四件套:ls、cp、mv、rm 的安全姿势与 find 神器

2026-10-12 · 25 阅读 · 0 评论 · 0 赞

ls:不是列目录,是看情报

$ ls -lah
-rw-r--r--  1 app  staff   12M  3  8 09:26 app.log
drwxr-xr-x  5 app  staff  160B  3  7 20:11 logs
↑↑↑↑↑↑↑↑↑↑  类型+权限   大小  修改时间

// 第一个字符:- 文件  d 目录  l 链接
// 后九个字符每三个一组:属主 / 属组 / 其他人 × 读r 写w 执行x
// 这串权限位在权限篇会展开讲,先混个脸熟

// 高频组合
$ ls -lah          # 大小人类可读(K/M/G),含隐藏文件
$ ls -lht          # 按时间排序,最新在前——找最近改过的文件

cp / mv / rm:事故高发区

$ cp -a src/ dst/      # -a 保留权限、时间戳,目录递归(备份首选)
$ mv a.txt b.txt       # 重命名和移动是同一个命令
$ rm app.log           # 删单个文件

# 敬畏 rm 的三条军规:
# 1. rm 前先 ls 一遍同样的通配符 —— 看清要删的是什么
#    $ ls *.log        确认无误后,把 ls 换成 rm
# 2. 生产环境删目录,宁可 rm -rf 目录名,不要 rm -rf 目录名/
#    (多了个斜杠在部分 shell 下语义不同,且手滑空格会变成 rm -rf / )
# 3. 变量拼接路径时先 echo 出来人工确认,再执行删除

血泪规律:rm 事故都发生在脚本和变量拼接里,纯手敲反而少。变量为空时 rm -rf $dir/* 会变成 rm -rf /*——上线脚本务必先 echo 确认。

find:按任何条件找文件

$ find /var/log -name "*.log"              # 按名字(通配符要加引号)
$ find / -name "nginx.conf" 2>/dev/null    # 全盘找,错误信息丢弃
$ find . -size +100M                       # 找大于 100M 的(磁盘满排查常用)
$ find . -mtime -1                         # 最近 24 小时内改过的
$ find . -mtime +30 -name "*.log"          # 30 天前的日志(配合删除做清理)

# 找到之后直接批量处理(-exec 结尾要用 ; 转义)
$ find . -mtime +30 -name "*.log" -exec rm {} ;
$ find . -name "*.sh" -exec chmod +x {} ;

find + rm 比 rm -rf 安全得多:先跑 find 看输出列表,确认了再加 -exec——条件过滤后的删除,目标明确。

软链接与硬链接

一个文件可以有多个名字。硬链接(ln file link)是同一份数据的第二个名字,删掉原名数据还在;软链接(ln -s target link)是个指向路径的快捷方式,原文件没了它就悬空。日常用软链接居多,两个经典场景:版本切换——ln -sfn app-v2 current,发布回滚只需把链接一改;日志软链——把 /var/log/app 指到大容量数据盘,不动应用配置。下一篇:服务器上唯一现成的编辑器——vim 的最小必学集。

☕
503

10 年全栈工程师 · 503咖啡馆主理人

#Linux命令#ls#rm#cp#mv#find

评论 (0)

热门推荐

连载中 11/22

主从搭建实操:从零配出一主两从

光讲原理不过瘾?手把手搭一主两从:my.cnf 六个参数、复制账号、GTID、CHANGE REPLICATION SOURCE TO、SHOW REPLICA STATUS 验收,附翻车排查清单。

#MySQL#主从复制#GTID#主从搭建#高可用
2026-05-07 · 10114 阅读 · 0 评论 · 0 赞
连载中 16/22

连接池:HikariCP 参数与连接风暴

连接池不是越大越好:8 核机器配 1000 连接反而更慢的数学原理,HikariCP 四个必调参数,maxLifetime 与 wait_timeout 的隐形陷阱。

#MySQL#连接池#HikariCP#maxLifetime#连接风暴
2026-05-10 · 9877 阅读 · 0 评论 · 0 赞
连载中 4/16

缓存穿透:恶意 ID 打穿 MySQL 的四道防线

请求的数据在缓存和数据库里都不存在时,缓存形同虚设。聊聊参数校验、空值缓存、布隆过滤器、限流熔断四道防线的原理与组合打法。

#Redis#缓存穿透#布隆过滤器#高可用
2026-05-16 · 9307 阅读 · 21 评论 · 287 赞