首页 > 技术文章 > Centos7 高级命令

haojinfei 2020-10-28 16:31 原文

find stat file du grep cut tr sort uniq wc split tee tree dd date diff which locate xargs

find   -- 查找文件所在的位置

基本用法: find 查找路径 查找条件

-name 名称 命令 范围路径 选项 查找的名字

# find / -name "a.txt" //全盘查找名称为a.txt的文件

-type 文件类型 //目录是d

# find /tmp/ -type f //查找/tmp目录下所有的普通文件
-size 大小
# find / -size +1G //全盘查找大于1G的文件
-user 所有者
# find / -user jim //查找文件的所有者为jim的文件
-perm 权限
# find / -perm -4000 //全盘查找有suid权限的文件
-atime -mtime -ctime 时间
# find /tmp -mtime 1 //查找/tmp目录下1天前修改过内容的文件

+2 3天以前
-2 2天以内
2 2天以前的24小时

多条件查找
逻辑运算: 与(and) 或(or) 非(!)
与: 多个条件同时满足为真 expr1 [-a|-and] expr2
# find / -size +1G -name "*.iso" //默认情况下是与的关系
或: 满足一个条件即为真 expr1 {-o|-or} expr2
# find / -size +1G -o -name "*.iso" // -o ⇔ -or
非: 不满足条件为真 { !| -not } expr1
# find /tmp ! -type d //查找/tmp下非目录文件 ! ⇔ -not

查找后执行动作
-exec 对查找到的所有文件直接执行动作
-ok 对查找到的每个文件执行动作前先询问
# find / -name a.txt -ok rm -rf {} \;
< rm ... /root/a.txt > ? y
< rm ... /tmp/a.txt > ? y
< rm ... /a.txt > ?

find [路径] [选项 选项的参数] [{-exec|-ok} command \;]



1、查找/bin目录下以a开头的命令,且这个命令由4个字符构成,拷贝到/opt/test目录内
find /bin -name “a???” -exec cp -r {} /opt/test \;
2.查找根下所属主是root,所属组不是root的文件或者目录
find / -user root -a ! -group root

stat -- 查看文件信息
用法:stat FILENAME
access time --访问时间(atime) cat,more,less... 一天中第一次访问会改变atime
modify time --内容修改(mtime) 修改文件内容
change time --状态修改(ctime) 修改文件属性,如权限,属主,属组,大小,名称...

file -- 确定文件的类型
# file zsh-5.0.2-25.el7.x86_64.rpm
zsh-5.0.2-25.el7.x86_64.rpm: RPM v3.0 bin i386/x86_64 zsh-5.0.2-25.el7

du -- 报告磁盘空间使用情况
# du -h /iso/
7.7G /iso/

grep -- 过滤满足条件的行

用法: grep [选项]... 模式 文件...
选项:
-E 支持扩展正则表达式 egrep
-i 忽略大小写
-v 取反
-n 显示行号
-c 只显示匹配的行数
-A NUMBER 显示模式匹配到的行和之后的NUMBER行
-B NUMBER 显示模式匹配到的行和之前的NUMBER行
-C NUMBER 显示模式匹配到的行和前后NUMBER行
模式:
^ 行首 以r开头的行: ^r
$ 行尾 以h结尾的行: h$
^$ 空行

# grep jim /etc/passwd
jim:x:1000:1000:JIM:/home/jim:/bin/bash

# cat /etc/passwd | grep jim
jim:x:1000:1000:JIM:/home/jim:/bin/bash

# ps aux |grep xeyes
root 1799 0.6 0.0 140048 2136 pts/2 S 16:08 0:01 xeyes
root 1817 0.1 0.0 140048 2172 pts/2 T 16:09 0:00 xeyes
root 1874 0.0 0.0 112664 964 pts/2 S+ 16:12 0:00 grep --color=auto xeyes


cut -- 打印列
用法:cut [选项]... [文件]...
选项:
-d 指定分隔符
-f 选择第几列,多列使用,隔开

# cut -d : -f 1,7 /etc/passwd

tr -- 替换或删除字符
用法:tr [选项]... SET1 [SET2]
# cat a.txt
abcdefgh
ijklm
# tr a A < a.txt //将a.txt中的a替换成A
Abcdefgh
ijklm
# tr abc ABC < a.txt //将abc一一对应替换成ABC
ABCdefgh
ijklm
选项:
-s 将连续出现的字符缩减替换成一个
-d 删除SET1
# cat a.txt
aaaa
aabab
# tr -s a A < a.txt //将连续出现的a缩减替换成一个A
A
AbAb
# tr -d a < a.txt //删除a

bb
# tr -s "\n" < a.txt //删除空行

sort   -- 排序,

默认情况下按每行的第一个字符进行顺序排序用法:sort [选项]... [文件]...

选项:
-n 按照数值从小到大进行排序
-t 指定分隔符 一般和-k结合使用
-k 使用分隔符分隔的第几列
-r 逆序显示
-u 去掉连续的重复行
# sort -t" " -k2 -n -r a.txt //以空格为分隔符,按照第二列从大到小的顺序进行排列
ac 2123 asdjfs
de 78 djlsdjf
ab 78 hello
cd 35 world
ad 33 bjsdfs

uniq -- 去重,去掉连续的重复行
用法:uniq [选项]... [文件]
选项:
-c 去重后统计重复的行数,将数字显示在每行的前面
-u 不打印连续重复的行
-d 只打印连续重复的行

 

wc -- 统计,统计行数,单词数,字节数
wc [选项]... [文件名]...
选项:
-l 统计行数 line

# wc /etc/passwd
51 96 2564 /etc/passwd
行数 单词数 字节数 文件名

# wc -l /etc/passwd //统计/etc/passwd文件内一共有多少行内容
51 /etc/passwd

# rpm -qa |wc -l //统计安装了多少个软件包
1344

split -- 切割文件
用法:split [选项]... [输入 [前缀]]
选项:
-b 指定切割后的文件大小,默认单位是Byte
-l 指定切割后文件的行数
-d 以数字作为切割后文件名称后缀,一般和-a结合使用
-a 指定数字的长度,一般和-d结合使用
# split -b 100 -d -a 4 b.txt //将b.txt按每个文件100字节进行切割
# ls
b.txt x0000 x0001 x0002

tee -- 输出+保存,将标准输入复制到每个指定文件,并显示到标准输出,默认为覆盖保存
用法:tee [选项]... [保存到的文件]...
选项:
-a 追加保存到文件

# head -3 /etc/passwd |tee /tmp/pass //将/etc/passwd文件的前3行的内容覆盖保存到/tmp/pass文件中
# head -2 /etc/passwd |tee -a /tmp/pass //将/etc/passwd文件的前2行的内容追加保存到/tmp/pass文件中

tree -- 树状显示目录内容
用法: tree [选项]... [目录]...
选项:
-L 指定深度
-o 输出到文件,而非标准输出

# tree -L 1 /

dd
用法:dd if=/dev/zero of=文件名 bs=块大小 count=块数量
if 从哪里读取
of 写到哪里去
bs 指定块大小block size
count 指定块的数量

/dev/zero 特殊设备 无限0资源

# dd if=/dev/zero of=/tmp/a.txt bs=1M count=50 //在/tmp/目录下创建a.txt空文件,此文件大小为50M

date 查看和修改系统时间日期
# date 查看时间日期
2018年 06月 07日 星期四 23:06:17 CST
# date -s "2018/6/7 15:05" 修改时间日期
2018年 06月 07日 星期四 15:05:00 CST

# date +%F
2018-06-07

# date +%Y%m%d
20180607

hwclock 查看和修改硬件时间日期
# hwclock 查看时间日期
2018年06月07日 星期四 23时09分03秒 -0.074195 秒
# hwclock -w //将硬件时间修改和系统一致
# date
2018年 06月 07日 星期四 15:07:51 CST
# hwclock
2018年06月07日 星期四 15时07分55秒 -0.130538 秒

--------------------------------------------------
` ` 先执行引号内命令

# date +%Y%m%d
20180607
# echo today is :
today is :
# echo today is :date +%Y%m%d
today is :date +%Y%m%d

 

# echo today is :`date +%Y%m%d`
today is :20180607
# which vim
/usr/bin/vim
# rpm -qf /usr/bin/vim
vim-enhanced-7.4.160-1.el7.x86_64
# rpm -qf `which vim`
vim-enhanced-7.4.160-1.el7.x86_64

 

推荐阅读