find

根据文件时间戳进行搜索

• 访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
• 修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。
• 变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。
**
搜索最近七天内被访问过的所有文件
find . f -atime -7
搜索恰好在七天前被访问过的所有文件
find . f -atime 7
搜索超过七天内被访问过的所有文件
find . f -atime +7

根据文件大小进行匹配

搜索大于10KB的文件
find . -size +10k
搜索小于10KB的文件
find . -size -10k
搜索等于10KB的文件
find .f -size 10k

根据按文件类型搜索

find /dev -type f //f普通
find /dev -type d //d目录
find /dev -type l //l链接
find /dev -type b //b块设备
find /dev -type c //c字符设备
find /dev -type s //s套接字
find /dev -type p //p管道文件

找到后处理的动作

print 找到后显示(默认动作)
find /etc -name “ifcfg*” -print

delete 找到后删除(慎用!!!
find /etc -name “ifcfg*” -delete

exec 找到后执行什么命令
find /etc -name “ifcfg*-exec cp -rf {} /tmp \; //以分号为结束符,加转义符号

ok 找到以交互的方式执行后面的命令
find /etc -name “ifcfg*” -ok cp -rf {} /tmp \;

扩展知识:find结合xargs(这个是我最常用)

find . -name “uplooking.txt”* | xargs rm -rf

rev,tac

rev左右颠倒
tac上下颠倒

sort

-n 按数字排序 -r 降序 -b忽略开头空格
sort -n -r aa.txt

uniq

uniq aa.txt 去掉连续的重复值
uniq -u aa.txt 显示未重复值
uniq -c aa.txt 统计重复次数

grep

grep root /etc/passwd
grep -i ftp /etc/passwd 忽略大小写查找ftp
grep -c root /etc/passwd 统计行数 看几行有root

cut

cut -d’ ‘ -f2 /etc/passwd 截取第二个字符
cut -c 4,5,6 /etc/passwd 剪切第456个字符

wc

wc -l /etc/passwd 统计文件中的行数 字母数

date

date +%Y-%m-%d-%H-%M-%S 按格式输出 2016-09-20-13-58-09

bc

差不多是个计算器
[root@manager ~]# echo “1+2” | bc
3
[root@manager ~]# echo “scale=3;3/2” | bc
1.500

判断条件

[ -a FILE ] 如果 FILE 存在则为真。
[ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真。
[ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真。
[ -d FILE ] 如果 FILE 存在且是一个目录则为真。
[ -e FILE ] 如果 FILE 存在则为真。
[ -f FILE ] 如果 FILE 存在且是一个普通文件则为真。
[ -g FILE ] 如果 FILE 存在且已经设置了SGID则为真。
[ -h FILE ] 如果 FILE 存在且是一个符号连接则为真。
[ -k FILE ] 如果 FILE 存在且已经设置了粘制位则为真。
[ -p FILE ] 如果 FILE 存在且是一个名字管道(F如果O)则为真。
[ -r FILE ] 如果 FILE 存在且是可读的则为真。
[ -s FILE ] 如果 FILE 存在且大小不为0则为真。
[ -t FD ] 如果文件描述符 FD 打开且指向一个终端则为真。
[ -u FILE ] 如果 FILE 存在且设置了SUID (set user ID)则为真。
[ -w FILE ] 如果 FILE 如果 FILE 存在且是可写的则为真。
[ -x FILE ] 如果 FILE 存在且是可执行的则为真。
[ -O FILE ] 如果 FILE 存在且属有效用户ID则为真。
[ -G FILE ] 如果 FILE 存在且属有效用户组则为真。
[ -L FILE ] 如果 FILE 存在且是一个符号连接则为真。
[ -N FILE ] 如果 FILE 存在 and has been mod如果ied since it was last read则为真。
[ -S FILE ] 如果 FILE 存在且是一个套接字则为真。
[ -z STRING ] “STRING” 的长度为零则为真。 (判断变量是否为空)

简单正则

. 匹配除换行符之外的任意单个字符
. 任意一个字符出现一次到多次
匹配任意一个(包括零个)在它前面的字符 0次以上
+ 匹配前面的正则表达式的一次出现或多次出现 1次以上
? 前边字符出现0或1次 0或1次
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次 {4,5}
[] 字符组内的任一字符
[^]对字符组内的每个字符取反(不匹配字符组内的每个字符)
^[^] 非字符组内的字符开头的行
[a-z] 小写字母
[A-Z] 大写字母
[a-Z] 小写和大写字母
[0-9] 数字
\< 单词头单词一般以空格或特殊字符做分隔,连续的字符串被当做单词
> 单词尾

转移符

反斜杠(\):使反斜杠后面的一个变量变为单纯的字符串。
单引号(’’):转义其中所有的变量为单纯的字符串。
双引号(””):保留其中的变量属性,不进行转义处理。
反引号(``):把其中的命令执行后返回结果。

参数

$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误