格式: find [OPTION] … [查找路径] [查找条件] [处理动作]
查找路径:可以指定具体的路径,默认是当前路径
查找条件:用来指定文件查找的标准,可以是文件名、大小、权限、类型等等
处理动作:对符合条件的文件进行的操作(复制、删除 、打印等等),默认是直接输出到屏幕上
-iname 忽略大小写
find -iname a-maxdepth level 指定最大的搜索层数,指定的目录为第一层
find -maxdepth 2 -name a-mindepth level 指定最小的搜索层数
find -mindepth 2 -name a-empty
find -empty find -empty -type d
-user username 查找属主是username的文件或者文件夹
-group groupname 查找属组是groupname的文件或者文件夹
-uid uid 查找uid为uid的文件或者文件夹
-gid gid 查找gid为gid的文件或者文件夹
-nouser 查找没有属主的文件或者文件夹
-nogroup 查找没有属组的文件或者文件夹
find -user jiangyi chmod :xiaofeng jiangyi chown :xiaofeng jiangy find -group xiaofenf find -group xiaofeng find -uid 1000 find -gid 1000 find -gid 1001 find -nouser find -nogroup(1)#unit 【 (#-1,#] 不包括#-1,但是包括# 】
(2)-#unit 【 [0,#-1],从0到#-1 】 (3)+#unit 【 (#,∞) 不包括# 】
以“天"为单位
(1)atime:[+|-] day
time 【直接写一个时间, [#,#+1)包括#,但不包括#+1】-time 【[0,#)】+time 【[#+1,∞]】和 上面的的-size 表示,每一项都有区别(2)mtime (3)ctime
以“分钟”为单位 (1)-amin (2) -mmin (3)-cmin
-print 【把搜索到的结果直接打印到屏幕上,默认的】
-ls 【相当于执行ls -l 命令】
-delete 【 删除查找的文件】
-fls filename 【将查找结果写入文件中】
-ok command {} \;【对查找的文件执行command命令,但是每一次都需要用户确认,最后的分号记得要加上】
-exec command {} ;【对查找到的文件执行command命令,不需要用户确认,最后的分号记得要加上】
(1) {} 【表示查找到的文件】 (2)find 传递的时候 是一次性传递的
由于好多的命令不支持管道,但是工作有需要用到,这个时候xargs就可以派上用场
xargs 把一个命令的输出结果,一个一个的传递给后面要执行的命令
有些命令不支持太多的字符,也可以使用xargs来传递
[root@localhost d]#echo a{1..1000000}|xargs touch [root@localhost d]#rm a{1..1000000} -bash: /usr/bin/rm: Argument list too long [root@localhost d]#ls a*|xargs rm -f -bash: /usr/bin/ls: Argument list too long [root@localhost d]#ls |xargs rm -f 一般情况下 find|xargs command(1)grep:全局用正则表达式搜索,并且打印符合条件的行
(2)grep [option] … pattern [file]
- -color=auto 【将匹配到的文本添加颜色显示】
-v 【invert 取反,显示没有匹配到】
-i 【ignore-case,忽略大小写】
-n 【line-number,显示匹配到的行的行号】
-c 【只显示匹配到的行的个数】
-o 【只显示匹配到的字符】
-q 【quiet, --silent,静默模式,不输出东西】
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误) 【补充】 $0 这个程式的执行名字 $n 这个程式的第n个参数值,n=1..9 $* 这个程式的所有参数,此选项参数可超过9个。 $# 这个程式的参数个数 $$ 这个程式的PID(脚本运行的当前进程ID号) $! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号) $? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误) $- 显示shell使用的当前选项,与set命令功能相同 $@ 跟$*类似,但是可以当作数组用-A # 【输出后#行】
-B # 【 输出前#行】
-C # 【前后各输出#行】
-e 【表示或者】
-E 【extended-regexp,扩展正则表达式】
-r 【递归查找】
grep 'root' passwd grep -v "root" passwd grep "root" passwd grep -i "root" passwd grep -n "root" passwd grep -ni "root" passwd grep -ci "root" passwd grep -i "root" passwd grep -o "root" passwd grep -oi "root" passwd grep -q "root" passwd grep -q "qwertyuip;qwertyuo" passwd echo $? grep -q "root" passwd echo $? grep -nA 2 "root" passwd grep -nB 2 "root" passwd grep -nC 2 "root" passwd grep -e "root" -e "mail" passwd grep -r root /etc/. 匹配任意单个字符
[abc] 匹配执行范围内的任意单个字符 [0-9]
[^abc] 取反
[:alnum:] 数字大小写字母 [a-zA-Z0-9]
[:alpha:] 包含大小写字母 [a-zA-z]的匹配项
[:lower:] 包含小写字母 [a-z]的匹配项
[:upper:] 包含大写字母 [A-Z]的匹配项
[:digit:] 包含数字 [0-9]的匹配项
[:punct:] 包含标点符号的匹配项
* 【0次或者多次,是贪婪匹配】
\?【linux中需要转义;0次或者一次】
\+ 【linux中需要转义;至少一次】
三者关系
\{n\} 【linux中不能使用r 来完成转义,所有都加上了\ 来转义;表示匹配n次】
\{m,n\} 最少m次,最多n次
\{,n\} 最多n次
\{m,\} 最少m次
\1 【表示前面第一个括号内匹配之后产生的字符,在\1的位置要在出现一次】
\2 【第二个括号,括号按照从外到内,即是最外层为1,往里层递增 (1(2 ))】
Usage: gzip [OPTION]… [FILE]…
gzip passwd 压缩文件 默认会删除文件 gunzip pass.gz 解压文件,默认也会删除文件 gzip -d passwd.gz 解压文件 -c 保留原来的文件 gzip -c passwd > passwd.gz 压缩 gzip -c -d passwd.gz > passwd 解压 - # 【1-9 指定压缩比,值越大压缩比例越大 默认是9】 zcat 查看压缩包内的文件 zcat passwd.gz > passwd
补充几个知识点,便于测试理解 (1)dev/zero 是什么?它是一个输入设备,你可你用它来初始化文件。 /dev/zero------该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。
如何使用/dev/zero? 像/dev/null一样, /dev/zero也是一个伪文件, 但它实际上产生连续不断的null的流(二进制的零流,而不是ASCII型的). 写入它的输出会丢失不见, 而从/dev/zero读出一连串的null也比较困难, 虽然这也能通过od或一个十六进制编辑器来做到. /dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件,就像临时交换文件. 关于 /dev/zero 的另一个应用是为特定的目的而用零去填充一个指定大小的文件, 如挂载一个文件系统到环回设备
使用/dev/null? 把/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用.
(2)dd命令 dd命令用于复制文件并对原文件的内容进行转换和格式化处理。