Linux 文件与目录操作命令(通关版)

📖 知识点简介

Linux 一切皆文件。文件与目录管理是运维工作的基本功------无论是部署服务、排查日志、配置权限,还是编写脚本,都离不开对文件和目录的精准操作。掌握这些命令,等于拿到了服务器的"通行证"。

🛠 核心命令整理

一、目录操作

命令 用途 常用参数
pwd 显示当前工作目录 ---
ls 列出目录内容 -l 详情 · -a 显示隐藏 · -h 人性化大小 · -t 按时间排序 · -S 按大小排序 · -r 反向排序
cd 切换目录 cd .. 上级 · cd ~ 家目录 · cd - 上一个目录
mkdir 创建目录 -p 递归创建 · -v 显示创建过程
rmdir 删除空目录 -p 递归删除空父目录

二、文件操作

命令 用途 常用参数
touch 创建空文件 / 更新时间戳 ---
cp 复制文件或目录 -r 递归 · -p 保留属性 · -a 归档(保留所有) · -u 仅更新 · -v 显示过程
mv 移动 / 重命名 -u 仅更新 · -v 显示过程 · -i 交互式(覆盖前询问)
rm 删除文件或目录 -r 递归 · -f 强制 · -i 交互式 · -rf🙅 慎用!
ln 创建链接 -s 软链接(符号链接) · 无参数为硬链接
file 查看文件类型 ---

三、查找与定位

命令 用途 常用参数
find 按条件查找文件 -name 按名 · -type 按类型(f/d/l) · -size 按大小 · -mtime 按修改时间 · -exec 对结果执行命令
locate 快速定位(依赖数据库) -i 忽略大小写 · -c 显示匹配数
which 查找可执行文件路径 ---
whereis 查找程序二进制/源码/man页 ---

💻 实操示例

bash 复制代码
# === 基础操作 ===

# 创建多级目录
mkdir -p /data/logs/nginx/$(date +%Y%m%d)

# 复制目录(保留属性)
cp -rp /etc/nginx/ /data/backup/nginx_$(date +%Y%m%d)

# 批量重命名(给所有 .txt 加 _backup 后缀)
for f in *.txt; do mv "$f" "${f%.txt}_backup.txt"; done

# 安全删除:先移动到回收站而非直接 rm
alias rm-safe='mv -t ~/.trash'
# 用法:rm-safe file1 file2

# === find 实战 ===

# 查找 7 天前修改的日志并打包
find /var/log -name "*.log" -mtime +7 -exec tar -rvf old_logs.tar {} ;

# 查找大于 100MB 的文件
find / -type f -size +100M -exec ls -lh {} ; 2>/dev/null

# 查找空目录并删除
find . -type d -empty -delete

# === 链接 ==

# 给 Nginx 配置做软链接(方便版本切换)
ln -sf /etc/nginx/conf.d/prod.conf /etc/nginx/conf.d/active.conf

⚠️ 常见坑点 / 注意事项

  1. rm -rf / 噩梦 :永远不要在生产环境直接执行此命令。建议养成习惯:先 lsrm,或使用 rm -i 别名。
  2. cp 时漏掉隐藏文件cp -r src/ dst/ 不会复制 . 开头的隐藏文件。正确做法:cp -r src/. dst/rsync -a src/ dst/
  3. 软链接删错源文件 :删除软链接本身要用 rm link_name,不要加末尾斜杠,否则可能误删源目录下的文件。
  4. ... 的特殊含义. 代表当前目录,.. 代表上级目录。编程时注意路径拼接别踩坑。
  5. find -exec 性能优化 :大量文件时 -exec {} +(合并执行)比 -exec {} ;(逐个执行)效率高数倍。
相关推荐
IT_陈寒26 分钟前
Vite的热更新突然不香了,排查三小时差点砸键盘
前端·人工智能·后端
子兮曰1 小时前
Agency-Agents 深度解析:400+ AI 专家的"梦之队"如何重塑开发工作流
前端·后端·vibecoding
用户8356290780512 小时前
Python 实现 PDF 文件加密与解密方法
后端·python
小满zs2 小时前
Go语言第二章(小无相功)
后端·go
用户8356290780512 小时前
使用 Python 冻结与拆分 Excel 窗格教程
后端·python
karry_k2 小时前
MyBatis批量insert-select踩坑:useGeneratedKeys=true 可能让PostgreSQL返回大量插入结果
java·后端
妙码生花2 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十九):点选验证码代码逐行目检
前端·后端·go
贰先生2 小时前
Xiuno BBS X版 用户封禁系统
后端
karry_k2 小时前
PostgreSQL 在 MyBatis 中执行正常 SQL 失效:一次 DELETE USING 踩坑记录
java·后端
ServBay2 小时前
不会写代码也能建站?AI 时代,非技术创始人如何从零搭建自己的 Web 项目
后端·mcp