常用Linux命令之文件相关命令(一)

时间:2021-09-12 16:31:26

一、文件显示命令

  1、cat命令:

    cat命令连接文件并打印到标准输出设备上,经常用来显示文件的内容,相当于DOS下的type命令

    cat命令的一般格式:

    

cat [选项] 文件名1 [文件名2]

该命令有两个功能,其一是用来显示文件的内容。它依次读取由参数文件1所指明的文件,将他们的内容输出到标准输出上,其二是连接两个或多个文件,如 cat f1 f2 >f3,将把文件f1和f2的内容合并起来,然后通过输出定向符“》”,将他们放入文件f3中。

选项含义如下:

  • -n 或 --number:由 1 开始对所有输出的行数编号。
  • -b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
  • -s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
  • -v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
  • -E 或 --show-ends : 在每行结束处显示 $。
  • -T 或 --show-tabs: 将 TAB 字符显示为 ^I。
  • -A, --show-all:等价于 -vET。
  • -e:等价于"-vE"选项;
  • -t:等价于"-vT"选项;

  2、more命令

    如果文件太长,用cat只能看到最后一页,而用more命令时可以一页一页地显示。

    more命令的一般格式:

 

 

more [选项] 文件名

 该命令一次显示一屏文本,满屏后显示停下来,并在每个屏幕底部出现一个提示信息,给出至今已显示的百分比:--More-(XX%)。

进入more状态,用Enter键可以向后移动一行,空格键可以向后移动一页;用Q键可以退出;用B键显示上一行内容;用H键显示帮助屏,该屏上有相关的帮助信息,更多功能可以用 man more命令获得

选项含义如下:

 

  • -num 一次显示的行数
  • -d 提示使用者,在画面下方显示 [Press space to continue, 'q' to quit.] ,如果使用者按错键,则会显示 [Press 'h' for instructions.] 而不是 '哔' 声
  • -l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
  • -f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
  • -p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
  • -c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
  • -s 当遇到有连续两行以上的空白行,就代换为一行的空白行
  • -u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
  • +/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
  • +num 从第 num 行开始显示
  • fileNames 欲显示内容的文档,可为复数个数

  3、less命令

    与more命令一样,less命令也用来分屏文件内容,但功能比more更强大

    less命令一般格式

less [选项] 文件名

选项含义如下:

  • -b <缓冲区大小> 设置缓冲区的大小
  • -e 当文件显示结束后,自动离开
  • -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
  • -g 只标志最后搜索的关键词
  • -i 忽略搜索时的大小写
  • -m 显示类似more命令的百分比
  • -N 显示每行的行号
  • -o <文件名> 将less 输出的内容在指定文件中保存起来
  • -Q 不使用警告音
  • -s 显示连续空行为一行
  • -S 行过长时间将超出部分舍弃
  • -x <数字> 将"tab"键显示为规定的数字空格
  • /字符串:向下搜索"字符串"的功能
  • ?字符串:向上搜索"字符串"的功能
  • n:重复前一个搜索(与 / 或 ? 有关)
  • N:反向重复前一个搜索(与 / 或 ? 有关)
  • b 向后翻一页
  • d 向后翻半页
  • h 显示帮助界面
  • Q 退出less 命令
  • u 向前滚动半页
  • y 向前滚动一行
  • 空格键 滚动一页
  • 回车键 滚动一行
  • [pagedown]: 向下翻动一页
  • [pageup]: 向上翻动一页

  4、head命令

    head命令一般格式:

head [参数] 文件名

head命令在屏幕上显示指定文件的若干行,行数由参数值来确定。显示行数默认为10

参数含义如下

  • -c SIZE或--bytes=SIZE:显示文件开始的SIZE字节
  • -n NUMBER或--LINES=NUMBER:显示开始的NUMBER行,默认输出10行
  • -q或--quit或--silent:不显示文件名
  • -v或--verbose:显示文件名

  5、tail命令

    tail命令的一般格式:

tail [参数] 文件名

tail命令在屏幕上显示指定文件的末尾若干行。行数由参数决定,默认显示文件的后10行。如果指定的文件多于一个,那么tail在显示每个文件之前先显示文件名

选项含义如下:

  • -c N或--byte=N输出后N个字节
  • -f或--follow tail:命令超过文件的末端以后,继续尝试读取更多的文件内容。有些文件的内容不断增加,如日志文件,这个选项可以不断地输出新添到文件中的内容
  • -n或--line=N输出后N行,而不是默认的10行
  • -q或-quiet或--silent :不输出包含该给定文件的文件名
  • -v或--verbose:始终输出包含给定的文件名

二、匹配、排序命令

  1、grep命令

    该命令用来在文本中查找指定模式的单词或短语,并在标准输出上显示包括给定字符串模式的所有行。

    grep命令的一般格式

grep [选项] 文件名

选项含义如下:

  • -a 或 --text : 不要忽略二进制的数据。
  • -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
  • -b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
  • -B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
  • -c 或 --count : 计算符合样式的列数。
  • -C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
  • -d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
  • -e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
  • -E 或 --extended-regexp : 将样式为延伸的普通表示法来使用。
  • -f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
  • -F 或 --fixed-regexp : 将样式视为固定字符串的列表。
  • -G 或 --basic-regexp : 将样式视为普通的表示法来使用。
  • -h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
  • -H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
  • -i 或 --ignore-case : 忽略字符大小写的差别。
  • -l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
  • -L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
  • -n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
  • -q 或 --quiet或--silent : 不显示任何信息。
  • -r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
  • -s 或 --no-messages : 不显示错误信息。
  • -v 或 --revert-match : 显示不包含匹配文本的所有行。
  • -V 或 --version : 显示版本信息。
  • -w 或 --word-regexp : 只显示全字符合的列。
  • -x --line-regexp : 只显示全列符合的列。
  • -y : 此参数的效果和指定"-i"参数相同。

  2、find命令

    在目录结构中搜索满足查询条件的文件,并执行指定操作。

    find命令的一般格式

find [路径...] [表达式]

find 命令从左向右分析各个参数,然后依次搜索目录。find视在“_”、“(”、“)”或者“!”前面的字符串为待搜索的文件;在这些符号后面的字符串为参数选项。如果没有设置路径,那么find搜索当前目录;如果没有设置参数选项,那么find默认提供-print选项

表达式由选项、测试、和操作3部分组成,分别由运算符分开。

选项含义如下

  • -maxdepth level:从指定目录往下多level层。当level为0时,就表示只搜索指定的目录
  • -mindepth level:对于小于level的几倍不做任何测试和操作
  • -mount:仅搜索相同文件系统的子目录

测试时指定的数字参数如下:

  • +n:表示大于n;-n表示小于n;n表示等于n
  • -amin n:查找n分钟以前被访问的所有文件
  • -cmin n:查找n分钟以前文件状态被修改过的所有文件
  • -mmin n:查找n分钟以前文件内容被修改过的所有文件
  • -atime n:查找n天以前被访问过的所有文件
  • -ctime n:查找n天以前文件状态被修改过的所有文件
  • -group '用户组名' :查找属于指定用户组的所有文件
  • --user '用户名' :查找属于指定用户的所有文件

操作命令含义如下:

  • -exec 命令{}:对符合条件的文件执行由“命令”指定的Linux命令
  • -ok 命令名{}:对符合条件的文件执行由“命令名”指定的Linux命令,与exec不同的是,它会询问用户是否要执行该命令
  • -ls :列出所有找到的文件
  • -fprint 文件名:将所有找到文件的名字存放到由“文件名”指定的文件中。如果该文件不存在,就以此名建立一个新文件

运算符含义如下:

  • (表达式):优先执行该表达式
  • !表达式:如果该表达式为假,则“! 表达式”为真
  • -not 表达式:与“!表达式”相同
  • 表达式1 表达式2:表示“与”的关系,即如果表达式1为假,则不计算表达式2
  • 表达式1 -a 表达式2:与“表达式1 表达式2” 作用相同
  • 表达式1 -o 表达式2:表示或的关系,即如果表达式1为真,则不计算表达式2

 例:查找当前目录中所有以m开头,后随一个字母或数字的.c文件,并交互式地显示某些文件内容

#find -maxdepth 1 -name 'm?.c' -ok cat {}\;

例:查找当前目录中所有以main开头的文件,并显示这些文件的内容

#find -maxdepth 1 -name 'main*' -exec cat {}\; 

例:列出当前目录中文件名以txt结尾的,十天之前被修改过的文件

#find -name '*.text' -ctime +10 -ls

  3、sort命令

    sort命令用于对文本文件的各行进行排序。

    sort命令的一般格式

sort [选项] 文件列表

sort命令将逐行对指定文件中的所有行进行排序,并将结果显示在标准输出上。如果不指定文件名或者使用“-”表示文件,则排序内容来自标准输出。

选项含义如下

  • -m:如果文件列表中的文件已经排好序,则对这些文件统一进行合并,不做排序
  • -r:逆序排序
  • -o:将文件排序输出放到该文件名所指定的文件中。如果该文件不存在则创建一个新文件。

例:系统中有文件a.c,它的内容为:

常用Linux命令之文件相关命令(一)

则对a.c进行排序:

常用Linux命令之文件相关命令(一)

  4、uniq命令

    uniq命令显示文件中所有不重复行。

    uniq的一般格式:

uniq [选项] 文件

uniq命令读取输入文件,并比较相邻的行,只留下其中一行。该命令加工后的结果存放到输出文件中。输入文件和输出文件必须不同。如果输入文件用“_”表示,则从标准输入上读取。

选项含义如下:

  • -c:显示输出时,在每行的行首加该行在文件中出现的次数
  • -d:只显示重复行
  • -u:只显示文件中不重复行

例:显示a.c中不重复行

常用Linux命令之文件相关命令(一)

三、比较文件内容的命令

  1、comm命令

    comm命令的一般格式:

comm [-123] 文件1 文件2

选项含义如下:

  • -1:不显示仅在文件1 中的行
  • -2:不显示仅在文件12中的行
  • -3:不显示在comm输出中的第一、第二和第三列

例:文件m1.c和m2.c内容如下:

常用Linux命令之文件相关命令(一)

常用Linux命令之文件相关命令(一)

对m1.c和m1.c进行比较,只显示他们共有的行

常用Linux命令之文件相关命令(一)

  2、diff格式

    diff的一般格式:

diff [选项] 文件1 文件2

该命令逐行比较两个文件,列出它们的不同之处,并告诉用户,为了使两个文件一致,需要需要修改它们的哪些行。如果两个文件完全一样,则该命令不显示任何输出。

选项及含义如下:

  • -b:忽略行尾的空格,儿字符串中的空白符都被看作是相等的
  • -c:输出格式是带上下文的三行格式
  • -r:当文件1和文件2 都是目录时,递归比较找到的各子目录

例:假设文件m3.c内容如下:

常用Linux命令之文件相关命令(一)

用diff命令比较m1.c和m3.c的区别

常用Linux命令之文件相关命令(一)

输出的含义是:如果将文件m1.c和m3.c的3-6行改成m3.c的3行,那么两个文件就相同了。

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

  1、cp命令

    cp命令的一般格式:

cp [选项] 源文件或目录目标文件或目录

产品命令是将源文件或目录复制到目标文件中或目录中。如果参数中指定了两个以上文件/目录,且最后一个是目录,则cp命令视最后一个为目的目录,将前面指定的文件和目录复制到该目录下;如果最后一个不是已存在的目录,则cp将给出错误信息。

选项及含义如下:

  •  -a:该选项通常在复制目录时使用,递归的将源目录下的所有子目录及其文件都复制带目标目录,并且保留文件链接和文件属性不变,等效于-dpr
  • -d:复制时保留文件链接
  • -f:覆盖已存在的目标文件,并且不给出提示
  • -i:在覆盖目标文件之前先给出提示,要求用户予以确认,输入“Y”,将覆盖目标文件
  • -p:除复制源文件的内容外,还将其修改时间和存取权限也复制到新文件中
  • -r:江源目录下的所有文件及其各级子目录都复制到目标位置

例:将文件m3.c复制到目录/usr/studentL/tem下,并改名为m3bak.c

#cp m3.c /usr/studentL/tem/m3bak.c

  2、rm命令

    rm命令的一般格式:

rm [选项] 文件列表

该命令可以删除一个目录中的一个或多个文件和目录,也可以将某个目录及其下属的文件和子目录删除。对于链接文件,只是删除整个链接文件,而原有的而那件保持不变。

选项及其含义如下:

  • -d:删除目录,不管它是否为空
  • -f:忽略不存在的文件,并且不给出提示信息
  • -r:递归的删除指定目录及其下属的各级子目录、相应的文件
  • -i:交互式的删除文件

  3、mv命令

    mv命令一般格式:

mv [选项] 源文件目标文件

该命令用来移动文件或目录,还可以在移动的同时修改文件名或目录名

选项及含义如下:

  • -i:交互模式,当移动的目录存在同名的目标文件时,用覆盖方式写文件,但在写入之前给出提示
  • -f:在目标文件已存在时,不给出任何提示