一、文件查看与内容操作
1. cat
- 作用:查看文件内容(一次性输出全部内容)。
- 常用选项:
-n
:显示行号。-b
:仅对非空行显示行号。
- 示例:
cat file.txt # 查看文件内容 cat -n file.txt # 显示行号 cat file1.txt file2.txt > combined.txt # 合并文件
2. more
/ less
- 作用:分页查看文件内容(支持上下翻页)。
- 区别:
more
:只能向下翻页。less
:支持上下翻页和搜索(按/
输入关键词)。
- 示例:
more large_file.log less large_file.log # 推荐使用(功能更强大)
3. head
/ tail
- 作用:查看文件开头或结尾部分内容。
- 常用选项:
-n <行数>
:指定显示的行数(如-n 10
)。-f
(仅tail
):实时追踪文件更新(常用于监控日志)。
- 示例:
head -n 5 file.txt # 查看前5行 tail -n 10 file.txt # 查看最后10行 tail -f app.log # 实时追踪日志
二、文本处理与过滤
1. grep
- 作用:文本搜索工具(基于正则表达式)。
- 常用选项:
-i
:忽略大小写。-v
:反向匹配(显示不包含关键词的行)。-r
:递归搜索目录中的文件。-E
:支持扩展正则表达式(等同于egrep
)。
- 示例:
grep "error" app.log # 搜索包含 "error" 的行 grep -i "warning" app.log # 忽略大小写搜索 "warning" grep -r "TODO" /project/src # 递归搜索目录中的文件
2. sort
- 作用:对文本行排序。
- 常用选项:
-n
:按数值排序(默认按字符串)。-r
:逆序排序(从大到小)。-k <列号>
:按指定列排序(如-k 2
按第二列)。
- 示例:
sort file.txt # 默认按字母顺序排序 sort -n data.txt # 按数值排序 sort -k 3 -r data.txt # 按第三列逆序排序
3. uniq
- 作用:去除相邻的重复行(通常与
sort
配合使用)。 - 常用选项:
-c
:统计重复次数。-d
:仅显示重复的行。
- 示例:
sort file.txt | uniq # 去重(需先排序) sort file.txt | uniq -c # 统计每行重复次数
4. cut
- 作用:按列提取文本内容。
- 常用选项:
-d <分隔符>
:指定列分隔符(默认是 Tab)。-f <列号>
:指定提取的列(如-f 1,3
)。
- 示例:
cut -d ',' -f 1,3 data.csv # 提取 CSV 文件的第一和第三列
5. sed
- 作用:流编辑器(批量替换、删除、插入文本)。
- 常用命令:
s/old/new/g
:全局替换。d
:删除行。
- 示例:
sed 's/foo/bar/g' file.txt # 替换所有 "foo" 为 "bar" sed '/^#/d' config.conf # 删除所有以 `#` 开头的行(注释)
6. awk
- 作用:强大的文本分析工具(按列处理数据)。
- 常用语法:
{print $N}
:打印第 N 列。BEGIN
/END
:处理前/后执行的操作。
- 示例:
awk '{print $1, $3}' data.txt # 打印第一和第三列 awk -F ',' '{sum += $2} END {print sum}' data.csv # 对第二列求和
三、文件查找与统计
1. find
- 作用:查找文件或目录(支持多种条件)。
- 常用选项:
-name <模式>
:按文件名匹配(支持通配符*
)。-type <类型>
:按文件类型查找(f
文件,d
目录)。-mtime <天数>
:按修改时间查找(如-mtime +7
表示 7 天前)。-exec <命令> {} \;
:对查找到的文件执行命令。
- 示例:
find /home -name "*.txt" # 查找所有 .txt 文件 find /var/log -type f -mtime +30 # 查找 30 天前修改过的文件 find . -size +10M -exec rm {} \; # 删除当前目录下大于 10MB 的文件(慎用!)
2. du
- 作用:统计目录或文件的磁盘使用情况。
- 常用选项:
-h
:人性化显示大小(如 KB/MB/GB)。-s
:仅显示总大小(不显示子目录)。--max-depth=N
:限制统计的目录层级。
- 示例:
du -sh /home # 统计 /home 目录的总大小 du -h --max-depth=1 /var/log # 显示 /var/log 下各子目录的大小
3. wc
- 作用:统计文件的行数、单词数、字节数。
- 常用选项:
-l
:仅统计行数。-w
:仅统计单词数。-c
:仅统计字节数。
- 示例:
wc -l access.log # 统计文件行数(日志条目数) wc -w essay.txt # 统计单词数
四、文件操作与管理
1. cp
- 作用:复制文件或目录。
- 常用选项:
-r
:递归复制目录。-i
:覆盖前提示确认。-v
:显示复制进度。
- 示例:
cp file.txt backup/ # 复制文件到目录 cp -r dir1/ dir2/ # 递归复制目录
2. mv
- 作用:移动文件或目录(也可用于重命名)。
- 示例:
mv old.txt new.txt # 重命名文件 mv file.txt dir/ # 移动文件到目录
3. rm
- 作用:删除文件或目录。
- 常用选项:
-r
:递归删除目录。-f
:强制删除(不提示确认)。
- 示例:
rm file.txt # 删除文件 rm -rf dir/ # 强制递归删除目录(慎用!)
4. ln
- 作用:创建文件链接。
- 常用选项:
-s
:创建符号链接(软链接)。
- 示例:
ln -s /path/to/file link_name # 创建软链接
五、文件权限与属性
1. chmod
- 作用:修改文件权限。
- 常用语法:
- 数字模式:
chmod 755 file.sh
- 符号模式:
chmod u+x file.sh
- 数字模式:
- 示例:
chmod 644 file.txt # 设置权限为 rw-r--r-- chmod +x script.sh # 添加可执行权限
2. chown
- 作用:修改文件所有者。
- 示例:
chown user:group file.txt # 修改所有者和所属组
六、文件压缩与归档
1. tar
- 作用:打包和解压文件。
- 常用选项:
-c
:创建归档文件。-x
:解压归档文件。-v
:显示操作过程。-z
:使用 gzip 压缩/解压。-j
:使用 bzip2 压缩/解压。
- 示例:
tar -czvf archive.tar.gz dir/ # 打包并压缩目录 tar -xzvf archive.tar.gz # 解压 .tar.gz 文件
2. gzip
/ gunzip
- 作用:压缩/解压文件(生成
.gz
文件)。 - 示例:
gzip file.txt # 压缩文件(生成 file.txt.gz) gunzip file.txt.gz # 解压文件
3. zip
/ unzip
- 作用:压缩/解压 ZIP 文件。
- 示例:
zip archive.zip file1.txt file2.txt # 压缩文件 unzip archive.zip # 解压 ZIP 文件
七、其他实用命令
1. diff
- 作用:比较两个文件的差异。
- 示例:
diff file1.txt file2.txt # 显示差异
2. file
- 作用:检测文件类型。
- 示例:
file unknown.bin # 检测文件类型(如 ELF 可执行文件、JPEG 图片等)
3. touch
- 作用:创建空文件或更新文件时间戳。
- 示例:
touch new_file.txt # 创建空文件 touch existing.txt # 更新文件访问和修改时间
八、组合命令示例
1. 统计日志中不同状态码的出现次数
cat access.log | awk '{print $9}' | sort | uniq -c
2. 查找当前目录下所有 .cpp
文件并备份到 backup
目录
find . -name "*.cpp" -exec cp {} backup/ \;
3. 实时监控日志中的错误信息
tail -f app.log | grep -i "error"
linux查找指定目录下最大的文件和文件夹?
. 查找最大的文件
使用 find
命令结合 du
和 sort
,按文件大小排序:
# 查找指定目录(如 /path/to/dir)下最大的前10个文件
find /path/to/dir -type f -exec du -h {} + 2>/dev/null | sort -rh | head -n 10
参数解释:
-type f
:仅搜索文件。-exec du -h {} +
:计算每个文件的大小(人性化显示,如 KB/MB/GB)。sort -rh
:按人类可读的数值逆序排序(从大到小)。head -n 10
:显示前10个结果。
2. 查找最大的文件夹
使用 du
命令直接计算目录大小并排序:
# 查找指定目录(如 /path/to/dir)下最大的前10个文件夹
du -h /path/to/dir --max-depth=1 2>/dev/null | sort -rh | head -n 11
参数解释:
--max-depth=1
:仅显示直接子目录(设为2
可包含子目录的子目录)。head -n 11
:显示前11行(包含父目录自身统计)。