Linux目录与文件的高级操作

http://note.youdao.com/noteshare?id=62c570aea5bb186661235984ef311153&sub=9605F90BFFC345C39833CA937F2BBE50
本节大纲
find命令在文件系统里查找文件
grep命令在文件中查找内容
涉及到文件的可以用通配符,grep还支持正则表达式
wc命令统计,可以统计文件行数和字节数
du查看各个目录占用磁盘空间的大小,磁盘空间不足的时候,可以用du来查看哪个文件占用空间最大,然后进行调整
split/cat分割合并文件,比如有1000行,100行分一个文件,可以分10个文件,也可以把10个100行的文件合成一个1000行的文件
查找文件 — WHICH
which命令
which命令是查找某个命令的完整路径,也就是说它是用来查找可执行文件的,which命令的原理是在当前登录用户的PATH环境变量记录的路径中查找。
which命令使用例子:
which grep(查找grep命令的二进制文件路径)
查找文件 — WHEREIS
whereis命令
whereis命令则是用来快速查找程序的二进制文件、源代码文件和man手册文件的路径。
比如如果输入:whereis grep,那么找到的结果就比which命令找到的内容多,因为which命令只会列出二进制文件路径,而whereis命令会把grep的二进制文件、源文件代码、帮助文档。
查找文件(重点)
find命令
find命令会在指定目录及其子目录下查找符合条件的特定文件。当我们忘了文件的位置,可以使用该命令。
命令格式:
find 目录名 条件
常见条件:
-name name指定要被寻找的文件或目录名称,可用通配符
-type x 以文件类型作为寻找条件。文件类型x如下:
d — 目录(directory),f — 文件(file)
-name -type d
-name -type f
例如:
find /temp -name “abc”
find /temp -name “abc”
find /temp -type d:查找/temp路径下所有目录(文件夹),包括隐藏的文件夹
find /temp -type f:查找/temp路径下所有文件
find /temp -name “abc” -type d:查找/temp路径下所有名字为"abc"的目录(文件夹),包括隐藏的文件夹
find /temp -name “abc” -type f:查找/temp路径下所有名字为"abc"的文件
文件操作的命令find ls cp mv都可以用分配符
find / -name “.conf":查找 / 目录下所有以".conf"结尾的文件
find / -name "a
.txt”:查找 / 目录下所有以"a"开头,以".txt"结尾的文件
文本关键字搜索 — grep命令
grep命令
一种强大的文本搜索工具,并把匹配的行打印出来
类似于Word里的Ctrl+f 的功能
啥时候用?
查看日志
查看命令输出
日志级别:
Critical:严重警告
[WARN]:警告,不影响
[ERROR]:一般错误
Debug:调试
grep root /var/log/messages:
在系统日志里搜索所有带"root"的信息
大小写敏感
grep ROOT /var/log/messages:查不到
支持正则表达式搜索文本:
正则表达式是一种匹配的模式:定义了一些 “公式”,和通配符类似,某一个字符包括特殊的含义
与通配符不同的是,正则表达式是grep命令支持,而通配符是Shell支持
正则表达式针对的是命令
通配符针对的是Shell
grep命令 — 例子
grep “test” d* 通配符
显示所有以d开头的文件中包含test的行
grep “test” aa bb cc 多个文件
显示在aa,bb,cc文件中匹配test的行
grep “root” -r /var/log 目录中递归搜索
在/var/log所有子目录子文件中搜索包含字符串"root"的行
grep ‘^test’ /var/log/scp.log 正则表达式
在scp.log中搜索以字符串"test"开头的行
grep ‘abc$’ /var/log/scp.log 正则表达式
在scp.log中搜索以字符串"abc"结尾的行
grep in a.txt
在a.txt中找含有in的行
[root@localhost ~]# grep in a.txt
tail -f install.log
Installing rdate-1.4-16.el6.i686
Installing zip-3.0-1.el6.i686
Installing bridge-utils-1.2-10.el6.i686
Installing eject-2.1.5-17.el6.i686
Installing strace-4.5.19-1.17.el6.i686
Installing b43-fwcutter-012-2.2.el6.i686
Installing eject-2.1.5-17.el6.i686
Installing strace-4.5.19-1.17.el6.i686
Installing b43-fwcutter-012-2.2.el6.i686

grep ‘^In’ a.txt
在a.txt中找以In开头的行
[root@localhost ~]# grep ‘^In’ a.txt
Installing rdate-1.4-16.el6.i686
Installing zip-3.0-1.el6.i686
Installing bridge-utils-1.2-10.el6.i686
Installing eject-2.1.5-17.el6.i686
Installing strace-4.5.19-1.17.el6.i686
Installing b43-fwcutter-012-2.2.el6.i686
Installing eject-2.1.5-17.el6.i686
Installing strace-4.5.19-1.17.el6.i686
Installing b43-fwcutter-012-2.2.el6.i686

grep ‘86KaTeX parse error: Expected 'EOF', got '#' at position 44: …ot@localhost ~]#̲ grep '86’ a.txt
Installing rdate-1.4-16.el6.i686
Installing zip-3.0-1.el6.i686
Installing bridge-utils-1.2-10.el6.i686
Installing eject-2.1.5-17.el6.i686
Installing strace-4.5.19-1.17.el6.i686
Installing b43-fwcutter-012-2.2.el6.i686
Installing eject-2.1.5-17.el6.i686
Installing strace-4.5.19-1.17.el6.i686
Installing b43-fwcutter-012-2.2.el6.i686

grep命令常用参数
-c:只输出匹配行的行数
[root@localhost ~]# grep -c ‘^In’ a.txt
9
-i:不区分大小写
[root@localhost ~]# grep -i ‘^in’ a.txt
Installing rdate-1.4-16.el6.i686
Installing zip-3.0-1.el6.i686
Installing bridge-utils-1.2-10.el6.i686
Installing eject-2.1.5-17.el6.i686
Installing strace-4.5.19-1.17.el6.i686
Installing b43-fwcutter-012-2.2.el6.i686
Installing eject-2.1.5-17.el6.i686
Installing strace-4.5.19-1.17.el6.i686
Installing b43-fwcutter-012-2.2.el6.i686
-n:显示匹配行及行号
[root@localhost ~]# grep -n ‘^In’ a.txt
2:Installing rdate-1.4-16.el6.i686
3:Installing zip-3.0-1.el6.i686
4:Installing bridge-utils-1.2-10.el6.i686
5:Installing eject-2.1.5-17.el6.i686
6:Installing strace-4.5.19-1.17.el6.i686
7:Installing b43-fwcutter-012-2.2.el6.i686
15:Installing eject-2.1.5-17.el6.i686
16:Installing strace-4.5.19-1.17.el6.i686
17:Installing b43-fwcutter-012-2.2.el6.i686
-v:显示不包含匹配文本的所有行
[root@localhost ~]# grep -v ‘^In’ a.txt
tail -f install.log
*** FINISHED INSTALLING PACKAGES ***ceshi
ceshi
ceshi
ceshi
ces1
ces2
ces3
*** FINISHED INSTALLING PACKAGES **ceshi
ceshi
ceshi
ceshi
ces1
ces2
ces3
-F:指明pattern非正则表达式
[root@localhost ~]# echo ‘^test’>>a.txt
[root@localhost ~]# grep ‘^test’ a.txt
[root@localhost ~]# (查不出来^test)
[root@localhost ~]# grep -F ‘^test’ a.txt
^test (可以查到^test)
文件内容统计(WC)
wc -l /etc/password
统计/etc/password文件有多少行
[root@localhost ~]# wc -l a.txt
25 a.txt
wc -c /etc/password
统计/etc/password文件有多少个字节
[root@localhost ~]# wc -c a.txt
509 a.txt
查看目录使用空间(du)
du命令是查看文件和目录的磁盘使用空间
df命令是查看文件系统使用空间的
例如:
du -h:按照递归方式列出每个文件的大小 -h是显示计量单位,有的是k有的是M
du:按照递归方式列出每个文件的大小 不显示计量单位
du f1:列出f1目录下的文件大小
[root@localhost ~]# du -sh f1
24K f1
[root@localhost ~]# du f1
4 f1/f12
4 f1/f13
24 f1
du -sh f1:f1整个目录的大小
[root@localhost ~]# du -sh f1
24K f1
du -sh:当前目录下总大小
[root@localhost ~]# du -sh
1.3M
du -sh /home/jcy:列出 /home/jcy路径下的总文件大小,显示计量单位
s:summary总的
h:按照k、M、G、byte这种计量单位来显示
Linux文件分割操作(split)
split[-bl] 文件 前缀
缺省按行分割,1000行
缺省前缀为x,切分xaa、xab、xac
-b 设定分割完成后的文件大小,单位为b,k,m
-l 以行数进行分割
-a 指明后缀长度
指定大小分割文件
例:
split -b 300k /etc/abc.txt abc.txt
abc.txtaa
abc.txtab
abc.txtac
分割成了三个小的档案
split -l 5 abc.txt log
把abc.txt分割为多个文件,每个文件包含5行,生成的文件前缀为log
cat abc.txta
>> abc.txt
把上面的三个小档案合成一个了
[root@localhost ~]# wc -l install.log
929 install.log
[root@localhost ~]# split -l 20 install.log test
[root@localhost ~]# ls
abbbd.txt install.log testad testao testaz testbk Videos
anaconda-ks.cfg install.log.syslog testae testap testba testbl xaa
a.txt m.txt testaf testaq testbb testbm xab
ceshi.txt Music testag testar testbc testbn xac
Desktop n.txt testah testas testbd testbo xad
Documents Pictures testai testat testbe testbp xae
Downloads Public testaj testau testbf testbq xaf
exit Templates testak testav testbg testbr xag
f1 testaa testal testaw testbh testbs xah
f2 testab testam testax testbi testbt xai
f3 testac testan testay testbj testbu xaj

不带前缀,默认划分原则
aa ab ac ad…az

za zb zc zd…zz
2626,超过范围报错,划分不了
边界值测试,测26
26+1个

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值