Linux——文件的读取与搜索


文件读取

文件的读取

cat和tac命令

cat命令将文件中全部内容都打印到屏幕上,适合较小文件的读取,不适合大文件。

tac命令是从最后一行开始反向打印,这一点与cat命令正好相反。

语法:cat/tac [-参数] [文件名]

cat命令参数:

符号 说明
-n 显示行号
-b 显示行号,但不显示空行行号
-E 显示$结尾符
-s 如何正好有连续的两行或以上的空行,则显示为1行空行
-T Tab ^I显示出来
-v 显示特殊字符,除了 LFD TAB 之外
-A 显示全部内容,列出所有隐藏符号,等价于-vET
-e 等价于-vE
-t 等价于-vt

例如:

[wjj@learning study]$ cat study.txt 
这是第一行
好好学习
天天向上
[wjj@learning study]$ tac study.txt 
天天向上
好好学习
这是第一行

1)使用-n显示行号

[wjj@learning study]$ cat -n study.txt 
     1	这是第一行
     2	好好学习
     3	天天向上

2)显示多个文件

[wjj@learning study]$ echo "这是第一个文件" > study1.txt
[wjj@learning study]$ echo "这是第二个文件" > study2.txt
[wjj@learning study]$ echo "这是第三个文件" > study3.txt
[wjj@learning study]$ cat study1.txt study2.txt study3.txt 
这是第一个文件
这是第二个文件
这是第三个文件
[wjj@learning study]$ cat -n study1.txt study2.txt study3.txt 
     1	这是第一个文件
     2	这是第二个文件
     3	这是第三个文件

3)结合重定向符号向文件中输入

重定向符号
符号 说明
< 将数据输入到左侧,覆盖原来的数据
<< 将数据输入到左侧,追加数据
> 将数据输入到右侧,覆盖原来的数据
>> 将数据输入到右侧,追加数据

结合重定向符号,进行多行输入:

[wjj@learning study]$ cat > study.txt << "EOF"
> 这是第一行
> 好好学习
> 天天向上
> EOF

如果只进行单行输入,利用echo命令即可

[wjj@learning study]$ echo "hello wolrd" >> hello.txt
[wjj@learning study]$ cat hello.txt 
hello wolrd

catecho命令在重定向输入时,如果该文件不存在,那么系统会自动生成该普通文件。

4)清空文件全部内容

/dev/null 称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个 EOF。配合重定向操作符,可以实现清空某个文件的目的。

例如:

[wjj@learning study]$ echo "hello world" > hello.txt
[wjj@learning study]$ cat hello.txt
hello world
[wjj@learning study]$ cat /dev/null > hello.txt 
[wjj@learning study]$ cat hello.txt
[wjj@learning study]$                #文件已经空了,因此不显示

head和tail命令

head从头开始打印文件,不加参数默认打印前十行。

tail从尾开始打印文件,不加参数默认打印后十行。

语法:head/tail [-参数] [文件名]

例如:

[wjj@learning study]$ for i in {
    
    1..100};do echo "${i}" >> number.txt;done #输入1~100至文件中
[wjj@learning study]$ head number.txt 
1
2
3
4
5
6
7
8
9
10
[wjj@learning study]$ tail number.txt 
91
92
93
94
95
96
97
98
99
100

cat可选择参数:

符号 说明
-c 显示前n个字符
-n 显示前n行
-q 不显示文件名
-v 显示文件名

参数示例:

[wjj@learning study]$ head -c 10 number.txt  #因为每行结尾有换行符`$`,因此10个字节只打印了五个数字
1
2
3
4
5
[wjj@learning study]$ head -n 5 number.txt 
1
2
3
4
5
[wjj@learning study]$ head -5 number.txt  # 单独使用-n选项时,也可以这么写
1
2
3
4
5
[wjj@learning study]$ head -q -n 5 number.txt #head默认不打印文件的名
1
2
3
4
5
[wjj@learning study]$ head -v -n 5 number.txt 
==> number.txt <==
1
2
3
4
5

tail命令可选参数:

符号 说明
-c 显示前n个字符
-n 显示前n行
-q 不显示文件名
-v 显示文件名
-f 检测文件,写入后检测
-F 检测文件,保存后即可读取
-s 与-f搭配使用,表示休眠间隔

通过-f和-F选项会进入到检测界面,按ctrl C退出。

-f选项只有在文件写入后才能检测到。(例如:vim编辑文件,必须完全退出vim环境才能检测到最新信息)

-F选项支持一边写入,一遍读取,在vim中只要w保存,即可检测到。


more和less命令

语法:more/less [-参数] [文件名]

more命令可以分屏打印文件,其工作原理与cat一样,都是将文件中全部信息提取出来,占用内存不利于大文件读取。

less命令是打印多少提取多少,不占用内存。

more命令只能向后翻,不能向前翻。

less命令可以随意浏览,并且可以使用小键盘上下移动。

使用moreless命令的使用技巧:

  • 空格——翻篇
  • 回车——下一行
  • q——退出

wc和du命令

语法:wc/du [-参数] [文件名]

wc命令如果不加任何参数,那么它会返回一个文件的 [行数] [单词数] [字节数]

其中单词数是以空格进行区分。

wc命令可选参数:

符号 说明
-l 只显示行数
-w 只显示单词数数
-c 只显示字节数

du命令可选参数:

符号 说明
-a 显示目录中个别文件的大小
-b 显示目录或文件大小时,以字节为单位
-c 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和
-D 显示指定符号连接的源文件大小
-h 以K,M,G为单位,提高信息的可读性
-H 与-h参数相同,但是K,M,G是以1000为换算单位
-k 以1024 bytes为单位
-l 重复计算硬件连接的文件
-L<符号连接> 显示选项中所指定符号连接的源文件大小
-m 以1MB为单位
-s 仅显示总计
-S 显示个别目录的大小时,并不含其子目录的大小
-x 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过

wu命令示例:

[wjj@learning study]$ wc number.txt learning.txt 
130 130 412 number.txt
  3   4  28 learning.txt
133 134 440 total         #总计

du命令示例:

[wjj@learning ~]$ du -a study/
4	study/pos_param.sh
4	study/learning1.txt
4	study/RunShell.sh
4	study/study2.txt
4	study/learning.txt
12	study/.number.txt.swp
4	study/study3.txt
4	study/study.txt
4	study/study1.txt
4	study/number.txt
4	study/makeuser.sh
56	study/               #总计
[wjj@learning ~]$ du -s study/
56	study/

猜你喜欢

转载自blog.csdn.net/why1472587/article/details/128607550