【Linux基础】文件查找和文本处理指令
目录
grep命令
find命令
tar命令
head命令
tail命令
wc命令
tee命令
grep命令
作用:在文件中搜索匹配特定模式的文本行,并将结果输出到标准输出(通常是终端)。
基本用法:
grep [选项] 搜索模式 [文件名]
常用选项:
- -i:忽略大小写,进行不区分大小写的搜索。
- -v:反向搜索,输出不匹配搜索模式的行。
- -n:在输出中显示匹配行的行号。
- -c:统计匹配行的数量,而不是输出匹配的行。
- -l:只列出包含匹配行的文件名,而不是输出匹配的行。
- -r 或 -R:递归搜索目录中的所有文件。
- -w:仅匹配整词,避免部分匹配。
- -e:指定多个搜索模式,可以多次使用 -e 来指定多个模式。
- -o:仅输出匹配的部分,而不是整行。
例子:
#搜索目录example中文件包含 "error" 或 "warning" 的行
grep -e "error" -e "warning" -r example/#搜索error所在的文件
grep -lr "error" example
find命令
作用:在目录树中查找文件和目录。
基本用法:
find [路径] [选项] [表达式]
- 路径:指定查找的起始目录,默认为当前目录 (.)。
- 选项:控制find的行为。
- 表达式:定义查找条件。
常用选项:
1.按名称查找
- -name:按文件名查找(区分大小写)。
- -iname:按文件名查找(不区分大小写)。
find /path/to/search -name "filename"
2.按类型查找
- -type f:查找文件。
- -type d:查找目录。
find /path/to/search -type f
3.按大小查找
- -size +100M:查找大于 100MB 的文件。
- -size -100M:查找小于 100MB 的文件。
find /path/to/search -size +100M
4.按时间查找
- -mtime -7:查找过去 7 天内修改的文件。
- -mtime +7:查找 7 天前修改的文件。
- -atime:按访问时间查找。
- -ctime:按状态变更时间查找。
find /path/to/search -mtime -7
5.执行操作
- -exec:对查找到的文件执行命令,{}代表当前文件,\;表示命令结束。
find /path/to/search -name "*.log" -exec rm {} \;
6.组合条件
- -and:逻辑与(默认)。
- -or:逻辑或。
- -not:逻辑非。
find /path/to/search -name "*.txt" -and -size +1M
最常用的起始也就前面两种用法。
tar命令
作用:用于文件打包和压缩。
基本用法:
tar [选项] [输出文件] [输入文件或目录]
- 选项:控制tar的行为(如创建、提取、压缩等)。
- 输出文件:生成的归档文件名(如.tar、.tar.gz等)。
- 输入文件或目录:需要打包的文件或目录。
常用参数选项:
- -c --create:创建新的归档文件,即打包,打包的意思就是说把一堆文件打包成一个文件。
- -x --extract:解压文件。
- -v --verbose:可视化,显示详细的tar处理的文件信息的过程。
- -f --file:要操作的文件名。
- -z:通过gzip来进行压缩或解压缩(.tar.gz或.tgz)。
- -j:通过bzip2来归档压缩文件(.tar.bz2)。
- -J:使用xz压缩工具压缩成.xz文件(.tar.xz)。
- -t --list:列出归档文件中的内容。
- -r:向归档文件中追加文件。
- -C --directory=DIR:解压文件至指定的目录,如果是解压到当前目录,可以不加-C。
例子:
#解压到指定目录
tar -xzvf archive.tar.gz -C /path/to/directory#查看文件中的内容
tar -tzvf archive.tar.gz#追加文件
tar -rvf archive.tar newfile#打包并压缩
tar -czvf archive.tar.gz file1 file2 dir1#解压
tar -xzvf archive.tar.gz
常用压缩格式对比
格式 | 命令选项 | 压缩率 | 速度 | 文件扩展名 |
gzip | -z | 中等 | 较快 | .tar.gz |
bzip2 | -j | 较高 | 较慢 | .tar.bz2 |
xz | -J | 最高 | 最慢 | .tar.xz |
head命令
作用:显示文件的开头部分(默认显示前 10 行)。它通常用于快速查看文件的内容,而不需要加载整个文件。
基本用法:
head [选项] [文件]
常用选项:
选项 | 说明 |
-n <行数> | 显示文件的前 <行数>行(例如 -n 20)。 |
-c <字节数> | 显示文件的前 <字节数>字节。 |
-q | 不显示文件名(静默模式)。 |
-v | 总是显示文件名(默认行为)。 |
例子:
#显示前十行
head filename.txt#显示前N行
head -n N filename.txt#显示前N个字节
head -c N filename.txt#显示多个文件的前N行,并在每个文件内容前显示文件名。
head -n N file1.txt file2.txt#静默模式(不显示文件名)
head -q -n N file1.txt file2.txt#从标准输入读取数据 通过管道将cat的输出传递给head,显示前10行。
cat filename.txt | head -n 10
tail命令
作用:用于显示文件的末尾部分(默认显示最后 10 行)。它通常用于查看日志文件或实时监控文件内容的变化。
基本用法:
tail [选项] [文件]
常用选项:
选项 | 说明 |
-n <行数> | 显示文件的最后 <行数>行(例如 -n 20)。 |
-c <字节数> | 显示文件的最后 <字节数>字节。 |
-f | 实时跟踪文件内容的变化(常用于日志监控)。 |
-q | 不显示文件名(静默模式)。 |
-v | 总是显示文件名(默认行为)。 |
例子:
#显示文件的最后十行
tail filename.txt#实时显示文件内容的变化
tail -f /var/log/syslog
wc命令
作用:主要用于统计文件的行数、单词数和字节数等信息。默认会同时统计行数、单词数和字节数。
基本用法:
wc [选项] 文件名
常用选项:
- -c:统计文件的字节数。
- -l:统计文件的行数。
- -w:统计文件的单词数。
- -m:统计文件的字符数(包括换行符等)。
- -L:统计文件中最长行的长度。
tee命令
作用:将标准输入(stdin)的内容同时输出到标准输出(stdout)和一个或多个文件中。它的名字来源于管道(pipeline)中的“T”型分叉,表示数据流的分流。
基本用法:
command | tee [选项] 文件名
常用选项:
- -a:追加模式(append)。如果不使用-a选项,tee默认会覆盖文件内容。
- -i:忽略中断信号(ignore interrupt signals)。即使接收到中断信号(如 Ctrl+C),tee也会继续运行。
例子:
#一个命令 ls -l,我们希望将它的输出保存到文件 output.txt 中,同时在终端上显示
ls -l | tee output.txt#如果希望将输出追加到文件中,而不是覆盖文件
ls -l | tee -a output.txt