1. find (找文件)
根据 文件名 和 路径 查找文件 并执行 一些操作
find 路径 -name "文件名"
find /home/python/Desktop/ -name "1.txt"
find /home/python/Desktop/ -name "*.txt"
find /home/python/Desktop/ -name "*.txt" -type f
(f ==> file, 找到的是 文件 类型)
-------------------------------------------------------------------------------------------------
find /home/python/Desktop/ -name "*.txt" -type d
(d ==> dir, 找到的是 文件夹 类型)
-------------------------------------------------------------------------------------------------
find /home/python/Desktop/ -name "*.txt" -type d -ctime -1
(ctime ==> changetime,-1 ==> 1天以内,+30 ==> 超过30天)
-------------------------------------------------------------------------------------------------
find /home/python/Desktop/ -name "*.txt" -type f -ctime -1 |xargs rm -rf {} \;
(xargs ==> 把前面的输出当做输入传给后面花括号, \; ==> 与find固定搭配)
-------------------------------------------------------------------------------------------------
find /home/python/Desktop/ -name "*.txt" -type d -ctime -1 -exec cp -r {} ~/Desktop/test/ \;
find /home/python/Desktop/test -type d -exec chmod -R 755 {} \;
(-exec ==> 执行某些操作)
-------------------------------------------------------------------------------------------------
find /home/python/Desktop/ -name "*.txt" -type f -ctime +30 -size +1k
(-size ==> 文件大小, +1k ==> 大于1k且k为小写,+1M ==> 大于1M且M为大写)
find . -iname "ab*" -type f -mtime -3 -size -1M -perm 755
find -name 'a.*' -o -name '12.*'
find -name 'a.*' -a -type f
find . -name "*.txt" -type f -mtime -1 -size +5M -perm 644
find . -name "*.txt" |xargs rm -rf {} \;
find . -name "*.txt" -exec rm -rf {} \;
find . -type f -exec chmod -R 644 {} \; #将当前目录下的所有文件的权限修改成664
find . -type d -exec chmod -R 755 {} \; #将当前目录下的所有目录的权限修改成755
find . -name "*.txt" -type f -mtime -1 -size +5M -exec mv {} /root/ \;
作用:把当前目录下以.txt结尾,并且修改时间在1天以内,文件大小大于5M的文件 移动到/root/目录去
find . -name "*.txt" -type f -mtime -1 -size +5M -exec cp -r {} /root/ \;
find . -type f -name "*.log" -mtime +30 -exec rm -rf {} \;
删除当前目录下修改时间在30天以前的*.log文件
根据 字符串 查找文件内容 并执行 一些操作
grep -n --color '^hello' ~/Desktop/2.txt
(-n ==> 显示行数, -color ==> 显示颜色, '^hello' ⇒ 查找的字符串, ^ ==>字符串开头,
$ ==> 字符串结尾, ~/Desktop/2.txt ==> 查找的文件路径)
-------------------------------------------------------------------------------------------------
grep -v --color '^hello' ~/Desktop/2.txt | grep -v "^$"
(-v ==> 取反,不要以 hello 开头的内容, -v ”^$” ==> 去掉空行)
-------------------------------------------------------------------------------------------------
egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' 2.txt
egrep '([0-9]{1,3}\.){3}[0-9]{1,3}$' 2.txt
('[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' ==> 正则表达式匹配ip地址 xxx.xxx.xxx.xxx)
cat /etc/passwd
grep 命令用于查找文件中的内容。匹配文件中的内容
grep -n --color "root" /etc/passwd
-n 表示查找的结果在passwd文件的 行号
--color ==>为关键字加上颜色
/etc/passwd 这个文件
grep -n --color "^root" /etc/passwd
^root 表示以root开头的行,文本后面出现root关键字没有用
grep -n --color "root$" /etc/passwd
grep -n --color "bash$" /etc/passwd
root$ 表示文本所在行以root结尾
bash$ 表示文本所在行以bash结尾
grep "#" /etc/passwd #查找passwd文件中包含#的行
grep -v "#" /etc/passwd #查找passwd文件中不包含#的行
-v 表示不包含
grep -v "#" /etc/passwd | grep -v "^$" #查找passwd文件中不包含#的行,并去除空行
grep -v "^$" 表示不包含空行,即去除空行
使用grep查找文件中的ip地址
grep --color "[0-9][0-9]" test.txt
"[0-9]" 表示0~9任意一个字符
"[0-9][0-9]" 两个连续数字
grep --color "[0-9]\{1,3}" test.txt #匹配1~3次
egrep --color "[0-9]\{1,3}\.[0-9]\{1,3}\.[0-9]\{1,3}\.[0-9]\{1,3}$" test.txt
[0-9]\{1,3}\. 表示以1~3位数字,并且后面有一个 . 号
\. 表示转义的. 一定要加上
[0-9]\{1,3}$ 表示以1~3位数字结尾,如果是4位数字或以上就不行
[a-z] 表示一个字母
egrep --color "([0-9]\{1,3}\.){3}[0-9]\{1,3}$" test.txt
{} 表示匹配的的次数
([0-9]\{1,3}\.){3} 将前面的形式匹配3次
[^] 匹配一个不在指定范围内的字符 ex: '[^A-FH-Z]rep' 匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
ls -l |grep '^a'通过管道过滤ls -l 输出的内容,只显示以a开头的行
grep 'test' aa bb cc 显示在aa,bb,cc文件中匹配test行
grep '[a-z]/{5/}' aa显示所有包含每个字符串至少有5个连续小写字符的字符串的行
grep -c "48" test.txt 统计所有以"48"字符开头的行有多少
grep -i "May" test.txt 不区分大小写查找 "May"所有的行
grep -n "May" test.txt 显示行号
grep -v "48" test.txt 显示输出没有字符"48" 所有的行
([a-z]+[a-z0-9]) 表示匹配任意一个字母 + 任意一个数字或字母
([a-z]+[a-z0-9]+) 这边的+号表示可以匹配多个
awk 可以打印某一行或者某一列(列是以空格分隔的)
awk '{print $1}' test.txt 打印文件第一列
awk '{print $3}' test.txt 打印文件第3列
awk '{print $NF}' test.txt 打印文件倒数第1个域 NF 表示最后一个
awk '{print $(NF-1)}' test.txt 打印文件倒数第2个域
awk -F: '{print $1,$NF}' /etc/passwd|head 5 打印前5行的第一列和最后一列
-F: 格式匹配,这样就可以不显示文本行中的 : 冒号了
awk -F: '{print $1":"$NF}' /etc/passwd|head 5 在第一列与最后一列之间添加一个:冒号
awk -F: '{print $1" secret "$NF}' /etc/passwd|head 5 在第一列与最后一列之间 多加一列 secret
-F: 表示以:符号做分隔
192.168.1.68 将其转换成 192-168-1-68
ifconfig|grep "inet addr"|grep 192 |awk '{print $2}'
ifconfig|grep "inet addr"|grep -v "172.0.0.1|awk '{print $2}'|awk -F"addr:" '{print $2}'|awk -F. '{print $1"-"$2"-"$3"-"$4}'
修改主机的名称,可以通过下面的命令