命令中的管道技术 |
左右两个命令之间
将左侧命令的输出结果通过管道交给右侧的命令进行处理
标准输出 | 标准输入
案例:根据uid的大小进行排序
管道技术中的tee技术
tee 重定向,将内容重定向到文件中并输出到屏幕上方
-a 追加重定向
例:[root@web01 opt]# echo $RANDOM | md5sum |cut -c 1-10| tee -a pass.txt
fd3805900c
tee与重定向的区别
重定向直接将数据内容输出到指定的文件中,但是不会显示屏幕上面
tee 将数据内容输出到指定的文件中,并且输出到屏幕上面
xargs 让一些不支持管道的命令支持管道使用
-n 分组
-I 将前面的命令得出的文件名进行一个个传递给{},后面的调用这个{},就相当于调用这些文件
将管道前面的命令的执行结果(文件名)通过管道交给后面的命令,后面的命令会认为他是一组数据,而xargs这个命令可以让后面的命令知道这是一组文件名,后面的命令需要针对这些文件操作
例:
将当前目录下的所有文件进行删除
[root@web01 ~]# ls | xargs rm -f
将当前目录下的所有文件中的oldboy替换为oldgirl
root@web01 ~]# ls |xargs sed ‘s#oldboy#oldgirl#g’
将当前目录下的所有文件复制到/opt目录下
[root@web01 ~]# ls |xargs cp -t /opt
[root@web01 ~]# ls | xargs -I {} cp {} /mnt
查找文件
find 路径 选项 表达式 动作
查找 地区 妹子 18-25岁 约吗
根据名称查找
-name
-iname 忽略大小写
例:
模糊匹配,查找以oldboy开头的,任意结尾 * 所有
[root@web01 ~]# find / -name ‘oldboy*’ -print
匹配所有 ? 只匹配一个字符,必须是一个字符
[root@web01 ~]# find / -name ‘oldboy?.txt’ -print
根据文件大小查找
b
k 小写
M
例:
查找文件大小大于100k 的文件
[root@web01 ~]# find /var/log -size +100k -print
查找文件大小小于100k 的文件
[root@web01 ~]# find /var/log -type f -size -100k -print |xargs ls -lh
找出文件大小大于100k并且小于200k的文件 -a 并且
[root@web01 ~]# find /var/log -size +100k -size -200k | xargs ls -lh
找出小于1k或者大于1M的文件 -o 或者
[root@web01 ~]# find /var/log -type f -size -1k -o -size +1M | xargs ls -lh
根据文件的类型
-type
f 普通文件
d 目录
l 软链接
b 块设备
c 字符设备
s socket文件套接字
p 管道文件
根据文件的修改时间
-mtime 根据最后的修改时间
例:
查找7天以前的文件
[root@web01 ~]# find ./ -mtime +7
查找7天以内的文件
[root@web01 ~]# find ./ -mtime -7
显示第七天的文件
[root@web01 ~]# find ./ -mtime 7
根据时间范围查找
[root@web01 ~]# find /root -mtime +7 -mtime -10
/root/file-04.txt
根据用户或者用户组查找
-user 用户
-group 用户组
-nouser 没有用户
-nogroup 没有用户组
例:
找出用户为postfix的文件
[root@web01 ~]# find / -user postfix -ls
找出没有用户的文件
[root@web01 ~]# find / -nouser -ls
找出文件属组为wheel的文件
[root@web01 ~]# find / -group wheel -ls
找出没有属组的文件
[root@web01 ~]# find / -nogroup -ls
找出没有属主并且没有属组的文件
[root@web01 ~]# find / -nouser -nogroup -ls
找出没有属主或者没有属组 \ ( \ )条件表达式看做是一个整体
[root@web01 ~]# find / \ ( -nouser -o -nogroup \ ) -ls
找出属主和属组同为postfix的文件
[root@web01 ~]# find / -user postfix -a -group postfix -ls
找出属主是mail 或者属组是mail的文件
[root@web01 ~]# find / \ ( -user mail -o -group mail \ ) -ls
找出属主是lisi,属组是mail的文件
[root@web01 ~]# find / -user lisi -group mail -ls