本文共 2525 字,大约阅读时间需要 8 分钟。
处理文件时,了解文件有多少行确实有些麻烦,尤其是当你需要处理大量文件时。这段文字纪念我在科研过程中的那些“傻逼”时光,也是为了记录一些实用的命令技巧。
在 Linux 环境下,文本操作命令是处理文件的核心工具。以下是一些常用的命令:
cat:用于查看文件内容,可以用 -n 参数显示每行编号。
-b 和 -n 的作用类似,但 -b 会忽略空白行。head 和 tail:
head file:显示文件的前 10 行。tail file:显示文件的后 10 行。-n 参数可以显示指定行数: tail -n 20 file:显示文件后 20 行。tail -f /var/log/messages:实时显示系统日志。more 和 less:
more file:分屏显示文件内容。less file:与 more 类似,但支持上下翻页。diff:比较两个文件的差异。
-b:忽略空格和空白行的差异。-l:忽略大小写差异。diff file1 file2 或 diff -B file1 file2。uniq:去除重复的行。
uniq file:去除相邻重复的行。wc:统计文本内容。
-l:统计行数。-w:统计单词数。-c:统计字符数。wc -l /etc/passwd:统计 /etc/passwd 文件的行数。如果你需要读取特定文件的某一行或几行,可以使用 sed 命令。
song.txt 的第 190 行到第 196 行:sed -n '190,196p' song.txt
sed -n '190,1p' song.txt
sed -n 'a,bp' song.txt
如果 a > b,结果将只显示第 a 行。
Find 命令用于搜索文件系统中的文件,支持多种选项和操作。
find pathname -options 【-print -exec -ok】 `` - **`pathname`**:指定要搜索的目录路径。 - **常用选项**: - `-name`:按文件名搜索。 - `-type`:按文件类型搜索: - `f`:普通文件。 - `d`:目录。 - `l`:符号链接文件。 - `-mtime`:按文件修改时间排序。 - `-n +n`:文件修改时间在 n 天以内。 - `-n +n`:文件修改时间在 n 天以前。 - `-prune`:排除当前目录中的文件。 - `-exec`:执行命令,格式为 `command {} \;`。 - `-ok`:安全模式执行命令,每次都会提示用户确认。 #### 实例 1. 列出匹配文件: ```bash find . -type f -exec ls -l {} \; /logs 目录中修改时间在 5 天以前的文件:find logs -type f -mtime +5 -exec rm {} \;find logs -type f -mtime +5 -exec -ok rm {} \;user1 的文件:find /etc -name “passwd*” -exec grep “user1” {} \;find . -type f -perm 644 -exec ls -l {} \;find / -type f -size 0 -exec ls -l {} \;find . -atime -7 -name “admin.log[0-9][0-9][0-9]” -ok rm {} \;xargs 命令用于处理 find 命令输出的文件。它可以分批处理文件,避免命令长度过长的问题。
find . -type f -print | xargs file
/tmp/core.log 文件:find / -name “core” -print | xargs echo “” > /tmp/core.log
find . -perm -7 -print | xargs chmod o-w
hostname 的文件:find . -type f -print | xargs grep “hostname”
/apps/bin 目录下的文件:find /apps -path “/apps/bin” -prune -o -print
sed 是一个非交互式文本编辑器,可以通过模式匹配和行号定位文本。
sed -n '2p' temp.txt
sed -n '1,3p' temp.txt
the 的行:sed -n '/the/p' temp.txt
the 的行:sed -n '4,/the/p' temp.txt
$ 结尾的单词:sed -n '/\$/p' temp.txt
sed -n '1,$p' temp.txt
p:打印匹配行。=:显示行号。a:在定位行后附加新文本。i:插入新文本。d:删除定位行。s:替换匹配模式。r:读取另一个文件。w:写入文件。q:退出 sed。通过这些命令,你可以在 Linux 环境中高效地处理文本文件和文件系统。希望这篇文章能为你的科研生活节省不少麻烦!
转载地址:http://tshfk.baihongyu.com/