Linux笔记:Linux常用命令(中)

匹配、排序及显示指定内容的命令

grep命令
该命令组包含三个命令:grep,egrep和fgrep命令
一般格式:

grep  [选项] 查找模式 [文件名1,文件名2,…]
    grep  [选项] [-e 查找模式| -f  文件] [文件名1,文件名2,…]

说明:该命令用来在文本文件中查找指定模式的词或短语,并在标准输出上显示包括给定字符串模式的所有行。
常用选项:
-E 将查找模式解释成扩展的正则表达式
-F 将查找模式解释成单纯的字符串。
-b,--byte-offset 在输出的每一行前面显示包含匹配字,用字节偏移量表示。符串的行在文件中的位置。
-c,--count 只显示文件中包含匹配字符串的行的总数。
-f FILE 从文件FILE中获取模式,每行一个。空文件不含模式,因此不做匹配。
-i,--ignore-case 匹配比较时不区分字母的大小写。
-R,-r,--recursive 以递归方式查询目录下的所有子目录中的文件。
-n 在输出包含匹配模式的行之前,加上该行的行号(文件首行的行号为1)。
-v 只显示不包含匹配字符串的文本行。
-x 只显示整个行都严格匹配的行。
示例
① 在密码文件 /etc/passwd 中查找包含 mengqc 的所有行:

$ grep  -F  mengqc  /etc/passwd
mengqc:x:500:100:mengqc:/home/mengqc:/bin/bash

② 在mengqc目录和子目录下的所有文件中查找字符串print出现的次数:

 $ grep  -r  'print'   mengqc

③ 在文件f1和f2中查找包含main或者printf的所有行,不管首字母的大小写:
$ grep -E '[Mm]ain | [Pp]rintf' f1 f2 或者

$ grep  -i  'main | printf'  f1  f2

注意事项
① 在命令名之后先输入搜索的模式,然后是要搜索的文件。
② 在文件名列表中可以使用通配符,如*等。
③ 要查找目录的子目录中的文件,应使用-r选项。
④ 如果在搜索模式的字符串中包含空格,应用单引号把模式字符串括起来。
⑤ 利用选项-f 可以大批地在文件中搜索字符串。

sort命令
一般格式: sort [选项] [文件列表]
说明:
逐行对指定文件中的所有行进行排序,并将结果显示在标准输出上

排序比较是依据从输入文件的每一行中提取的一个或多个排序关键字进行的。

选项:
-m,--merge 对已经排好序的文件统一进行合并,但不做排序。
-c,--check 检查给定的文件是否已排好序,若没有,则显示出错消息,不做排序。
-u,--unique 与-c选项一起用,严格地按顺序检查;否则,对排序后的重复行只输出第一行。
-o,--output=FILE 将排序输出放到该文件名所指定的文件FILE中。如果该文件不存在,则创建一个新文件。

改变排序规则的选项主要有:
-d,--dictionary-order 按字典顺序排序。
-f,--ignore-case 忽略字母的大小写。
-i,--ignore-nonprinting 忽略非打印字符。
-M,--month-sort 规定月份的比较次序。
-r,--reverse 按逆序排序。
-k,--key=n1[,n2] 指定从文本行的第 n1 字段开始至第 n2 字段(不包括第n2字段)中间的内容作为排序关键字。
-b,--ignore-leading-blanks 比较关键字时忽略前导的空白符。
-t,--field-seperater==SEP 将指定的“字符SEP”作为字段间的分隔符

uniq命令
一般格式: uniq [选项] [输入文件[输出文件]]
说明:
读取输入文件,比较相邻的行,去掉重复的行,只留下其中的一行。
选项:
-c,--count 显示输出时,在每行的行首加上 该行在文件中出现的次数。
-d,--repeated 只显示重复行。
-f, --skip-fields=N 忽略比较前N个字段。
-s, --skip-chars=N 忽略比较前N个字符。
-u,--unique 只显示文件中不重复的行。

查找和比较文件的命令

comm命令

一般格式:comm [-123] file1 file2
说明:对两个已经排好序的文件进行逐行比较。
选项:
-123 选项1,2和3分别表示不显示comm输出中的第一列、第二列和第三列。

diff命令

一般格式:diff [选项] 文件1 文件2
说明:比较两个文本文件,并找出它们的不同。
该命令输出的一般形式如下:

 n1  a  n3,n4	

(把文件1的n1行附加到文件2的n3~n4行后,则二者相同)

 n1,n2  d  n3	

(删除文件1的n1~n2行及文件2的n3行,则二者相同)

 n1,n2  c  n3,n4 

(把文件1的n1~n2行改为文件2的n3~n4行,则二者相同)

选项:
-b 忽略空格造成的差别。
-c 输出格式是带上下文的三行格式。
-C n 输出格式是有上下文的n行格式。
-e 输出一个合法的ed脚本。
-i 忽略字母大小写的区别。
-r 文件1 和文件2都是目录时,递归比较找到的各子目录。

cmp命令
一般格式:cmp [选项] file1 file2
说明
cmp命令对file1file2两个文件逐字节进行比较。
选项
-b,--print-bytes 显示有差异的字节。
-i,--ignore-initial=SKIP 跳过(不做比较)两个文件开 头的SKIP个字节。
-n,--bytes=LIMIT 至多比较LIMIT个字节。

find命令
一般格式 find [目录名] [条件表达式]
说明:从指定目录开始递归地搜索各个子目录,查找满足寻找条件的文件,并对它进行相应的操作。
条件表达式
被查找的相应文件可以由提供的条件表达式确定。
-not表示逻辑非,在命令中一般用“!”表示
-and表示逻辑与,一般用“-a”表示;
-or表示逻辑或,一般用“-o”表示。

对复合表达式要用圆括号括起来,例如,

\( -name  a.out  -o  -name  '*.o' \)

查找条件表达式中可以由以下选项组成

-name pattern 查找文件名与所给pattern相匹配的所有文件。pattern内可以用通配符*、?、[],但必须把pattern用引号括起来。

-lname pattern 查找文件名与pattern相匹配的所有符号链接文件。
-amin min
-cmin min

-atime n 查找最近被访问时间是在n天之前的文件。

-path pattern 查找路径名匹配给定字符串pattern的所有文件。

-depth 从指定目录下最深层的子目录开始查找。
-exec command 如果返回值是0,则执行该命令command。
-print 返回值是true,则在标准输出上显示找到的文件名。
-ok command-exec类似,首先要询问用户。
-size n[cwbkMG] 查找指定文件大小为n的文件
-type c 查找文件类型为c的文件。

示例
①查找当前目录中所有以“m”开头、以“.c”结尾的文件。

$ find  .  -name  "m*.c“

②删除目录/tmp中所有一周内没有被访问过的a.out或后缀为.o的文件。

$ find  /tmp  \( -name  a.out  -o  -name  '*.o' \)  -atime +7 -exec  rm '{}' \;

③找出/home目录下不是以.txt结尾的文件。

$ find  /home  \! -name  "*.txt"  

复制、删除和移动文件的命令

cp命令
一般格式:cp [选项] 源文件或目录 目标文件或目录
说明:将源文件或目录复制到目标文件或目录中
选项:
-a 递归地将源目录下的所有子目录及其文件都复制到目标目 录 中,并且保留文件链接和文件属性不变。它等效于-dpR
-d 复制时保留文件链接。
-f,--force 如果现存的目标文件不能打开,则删除它并且重试 一次。
-i,--interactive 交互式复制。
-p 除复制源文件的内容外,修改时间和存取权限也复制。
-R,-r 递归复制目录。
-l 不复制,而是创建指向源文件的链接文件

rm命令
一般格式: rm [选项] 文件列表
说明:删除文件和目录
选项:
-d,--dir 删除空目录。
-f,--force 忽略不存在的文件,且不给出提示信息。
-r,-R,--recursive 递归地删除指定目录及其下 属的各级子目录和相应的文件。
-i 交互式地删除文件。

mv命令

一般格式: mv [选项] source target
说明:对文件或目录重新命名,或者将文件从一个目录移到另一个目录中
选项:
-i,--interactive 交互式操作。
-f 禁止交互式操作。覆盖已有目标文件时,不给提示。
-t,--target-directory=DIRECTORY 把所有的源文件或目录都移到DIRECTORY所指示的目录中。

文件内容统计命令

一般格式: wc [选项] [文件]…
说明:统计指定文件的字节数、字数、行数,并将统计结果显示出来
选项:
-c,--bytes 统计字节数。
-l,--lines 统计行数。
-w,--words 统计字数。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr顺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值