Linux 文件与目录操作的常用命令及示例,涵盖创建、修改、权限管理、搜索等核心场景:
一、文件操作
1. 创建文件
touch file.txt # 创建空文件
touch file1.txt file2.txt # 批量创建文件
touch -t 202401010000 old.txt # 指定时间戳创建文件(格式:YYYYMMDDhhmm)
2. 复制/移动文件
cp file.txt /backup/ # 复制文件到目录
cp -r dir1/ dir2/ # 递归复制目录
mv file.txt new_name.txt # 重命名文件
mv *.log /var/log/ # 移动所有 .log 文件到目录
3. 删除文件
rm file.txt # 删除文件(需确认)
rm -f *.tmp # 强制删除所有 .tmp 文件(无确认)
rm -i *.log # 交互式删除(逐个确认)
二、目录操作
1. 创建目录
mkdir data # 创建单层目录
mkdir -p project/{src,doc} # 创建嵌套目录(-p 自动创建父目录)
mkdir -m 750 secure_dir # 创建带权限的目录(rwxr-x---)
2. 查看目录结构
ls -l # 详细列表(权限、大小、时间)
ls -a # 显示隐藏文件(以 . 开头)
tree -L 2 # 树状显示目录(需安装 tree 包)
3. 删除目录
rmdir empty_dir # 删除空目录
rm -r dir/ # 递归删除目录及内容(危险!)
rm -rf node_modules/ # 强制删除非空目录(常用于清理依赖)
三、文件查找与内容处理
1. 查找文件
find /var -name "*.log" # 按名称查找文件
find ~ -type f -size +10M # 查找大于 10MB 的文件
find . -mtime -7 # 查找 7 天内修改过的文件
find /tmp -empty -exec rm {} \; # 查找并删除空文件
2. 查看/编辑文件
cat file.txt # 显示文件全部内容
head -n 5 file.txt # 显示前 5 行
tail -f app.log # 实时跟踪日志更新
vi file.txt # 使用 vi 编辑器(操作步骤:i 插入 → 编辑 → Esc → :wq 保存退出)
3. 文本处理
grep "error" syslog # 搜索包含 "error" 的行
grep -r "TODO" project/ # 递归搜索目录中的文本
sed -i 's/old/new/g' file.txt # 批量替换文件内容
四、权限与属性管理
1. 修改权限
chmod 755 script.sh # 数字模式(rwxr-xr-x)
chmod u+x,o-r file.txt # 符号模式(所有者添加执行,其他人移除读)
chmod -R 644 /web/*.html # 递归修改目录下所有 .html 文件权限
2. 修改所有者/组
chown user:group file.txt # 修改文件所有者和组
chown -R www-data:www-data /var/www/ # 递归修改目录所属
chgrp developers data/ # 修改目录所属组
五、压缩与归档
tar -czvf backup.tar.gz /data # 压缩目录为 .tar.gz
tar -xzvf backup.tar.gz -C /restore # 解压到指定目录
zip -r images.zip *.png # 压缩为 ZIP 文件
unzip -l archive.zip # 查看 ZIP 文件内容
六、高级操作
1. 软链接与硬链接
ln -s /var/log/syslog syslog_link # 创建软链接(类似快捷方式)
ln file.txt file_hardlink # 创建硬链接(共享 inode)
2. 文件属性检查
stat file.txt # 查看文件详细信息(大小、inode、时间戳)
md5sum file.iso # 计算文件 MD5 校验和
du -sh /home/* # 统计目录占用空间(-s 总大小,-h 易读格式)
注意事项
- **谨慎使用
rm -rf
**:删除操作不可逆,尤其避免rm -rf /
等危险命令。 - 备份重要数据:操作前建议对关键文件进行备份。
- 权限分配原则:遵循最小权限原则(如网站目录通常设为
755
或644
)。
以上命令适用于 Ubuntu、CentOS、Debian 等主流发行版,部分工具(如 tree
)需通过包管理器安装:
# Ubuntu/Debian
sudo apt install tree
# CentOS/RHEL
sudo yum install tree