若有不妥之处,望请各位大佬提出
find命令
find命令主要执行文件,选项不是很多,用起来很便捷。
find . -maxdepth 2 -mindepth 1 -type f -atime +7 -name -size +2k "*.txt" -user test -delete
#在当前目录下查找目录最大深度为:2,最小深度为:1,文件类型为普通文件,访问时间大于7天,文件名为任何字符开头.txt结尾的文件,大于2k的,所属用户为test的文件,将它们全部删除
- .:指定开始搜索的路径,这里代表当前目录
- maxdepth:限定查找最大目录深度,没有限制的时候会一直查找下去
- mindepth:限定目录最小深度
- type:文件类型,还有其他的文件类型
- atime:文件访问时间,以天为计,+7:表示大于7天,-7:小于7天,7:等于7天。与时间类似的还有,amin,它是以分钟为单位
- name:文件的名字,支持通配符
- iname:忽视文件名的大小写
- size:文件的大小
- user:文件的所属者,这里指定的是test用户
- delete:将符合条件的文件全部删除
文件类型 | 类型参数 |
---|---|
普通文件 | f |
符号连接 | l |
目录 | d |
字符设备 | c |
块设备 | b |
套接字 | s |
FIFO | p |
选项 | 解释 |
---|---|
atime | 访问时间 |
mtime | 修改时间 |
ctime | 变化时间 |
选项 | 解释 |
---|---|
b | 块 |
c | 字节 |
w | 字 |
k | 千字节 |
M | 兆字节 |
G | 吉字节 |
find /proc -maxdepth 5 "*/test/*" -L -name "haha"
#在proc的目录下查找子目录中有test目录,最大深度为5的,支持符号连接,名字为haha
- L:find命令默认是不会查找符号连接的。开启了符号连接,要注意死循环的问题。如果一个符号连接连接到本身,你又开启了它,就会出现死循环了。
find . -type f -name "*.php" ! -perm 644 -exec chmod 644 {} \;
#查找当前目录下,文件权限不是644的以.php结尾的文件,并将它们的权限改为644
- exec:和管道符差不多,将上一条命令的结果作为下一条命令的参数
- !:非咯,不是的意思咯
- ;:一定要注意这个点,它表示对;(分号)的转义,表示chmod命令的结束。如果不写,表明find命令的结束,而chmod命令还没有结束,会报错参数遗漏的错误
find . \( -name "*.sh" -o -name "*.txt" \) -print
#打印出当前目录下文件以.sh结尾或者以.txt结尾的所有文件
- o:或者or的首字母,还有a与
- print:就是打印了,写不写都可
find . -regex '.*(\.jpg\|\.png)$'
- regex:正则表达式咯,非常恶心的东西。iregex:忽视大小写
cat命令
cat命令主要是查看,没什么特别好说的
cat test1.txt test2.txt
#将两个文件一起合起来查看
cat -T test.txt
#将文件中的制表表符,用^I显示出来
cat -n -s test.txt
将文件中多余的空白行删除,如果是两行及其以上的空白行,都会变成一空白行