[Linux文件管理之(高级)、?件查找]
?件管理之:?件查找
?、查看命令所属?件(which命令)
which命令 后面跟命令名即可查看命令所属位置
[root@localhost ~]# which ip
/usr/sbin/ip
# ps: ?些命令的路径都被配置到了环境变量PATH?
echo $PATH
二、根据文件属性查找文件(find命令)
共用参数:
-a : 并且 # 必须满足两个的文件
-o : 或者 # ↓ 就是或者的意思 满足任意一个即可查到
[root@python test]# find ./ -size -30M -o -size +50M
./
./txt
./txt2
------------------------------------------------------
总用量 122880
-r--r-----. 1 user1 user1 20971520 6月 17 06:32 txt # 用户属主为user1 属组为user1
-rw-r--r--. 1 root root 41943040 6月 17 06:32 txt2
-rw-r--r--. 1 root root 62914560 6月 17 06:32 txt3
[root@afei test]# find /root/ -size +10M # 正常查询文件大小超过10M的有以下6个
/root/test/txt
/root/test/txt2
/root/test/txt3
/root/a/b/c/txt
/root/a/b/c/txt2
/root/a/b/c/txt3
# 按照文件大小以及属主来查询
[root@afei test]# find /root/ -size +10M -user user1 # 按照属主来查询就一个(见上面)
/root/test/txt (结果有1个)
# 按照文件大小以及属组来查询
[root@afei test]# find /root/ -size +10M -group user1 # 按照属组来查询也就一个(见上面)
/root/test/txt (结果有1个)
# 按照文件大小以及所属类型查找
[root@afei test]# find /root/ -size +10M -type f
/root/test/txt
/root/test/txt2
/root/test/txt3
/root/a/b/c/txt
/root/a/b/c/txt2
/root/a/b/c/txt3 (结果有6个)
# 也可以一起使用 文件大小 所属类型 以及所属用户 以及属组....
[root@afei test]# find /root/ -size +10M -type f -user user1
/root/test/txt 文件大小 文件类型 文件所属用户
1、按文件名查找
[root@localhost ~]# find /etc -name "ifcfg-eth0"
[root@localhost ~]# find /etc -iname "ifcfg-eth0" # -i忽略??写
[root@localhost ~]# find /etc -iname "ifcfg-eth*"
2、按?件??
find [查询的路径] -size [大小]
[root@localhost ~]# find /etc -size +3M # ?于3M
[root@localhost ~]# find /etc -size 3M
[root@localhost ~]# find /etc -size -3M
[root@localhost ~]# find /etc -size +3M -ls # -ls找到的处理动作
3、指定查找的?录深度:
-maxdepth levels # ↓文件层级 5
[root@localhost ~]# find / -maxdepth 5 -a -name "ifcfg-eth0"
# -a并且,-o或者,不加- a,默认就是-a
4、按时间找(atime,mtime,ctime):
[root@localhost ~]# find /etc -mtime +3 # 修改时间超过3天
[root@localhost ~]# find /etc -mtime 3 # 修改时间等于3天
[root@localhost ~]# find /etc -mtime -3 # 修改时间3天以内
-ctime : 按照创建时间查询
-mtime : 按照修改时间查询
-atime : 按照访问的时间查询
5、设置查询最高的目录层级(目录层级参数必须放在第一位 -maxdepth )
# find [文件路径] -maxdepth 指定层级 -a -size 文件大小
查找从指定文件路径开始计算层级 -a是并且 -size文件大小 后面跟指定文件大小
不写默认就是-a 并且的意思
还有-o 是或者的意思 用得话 得指定
[root@python ~]# find /root/ -maxdepth 3 -a -size +40M
/root/txt2
[root@python ~]# find /root/ -maxdepth 6 -a -size +40M
/root/txt2
/root/a/b/c/txt2
6、按照文件类型来查询
# 按照目录查询
[root@python ~]# find /root/ -type d
# 按照普通文件来查询
[root@python ~]# find /root/ -type f
# 查看设备文件
[root@python dev]# find /dev/ -type c
-----------------------------------------------------------------------------
[root@localhost ~]# find /dev -type f # f普通
[root@localhost ~]# find /dev -type d # d?录
[root@localhost ~]# find /dev -type l # l链接
[root@localhost ~]# find /dev -type b # b块设备
[root@localhost ~]# find /dev -type c # c字符设备
[root@localhost ~]# find /dev -type s # s套接字
[root@localhost ~]# find /dev -type p # p管道?件
7、按照权限来查询
# 解释一波:
# rw-r--r--
# 6 4 4
#
# 6 所属用户
# 4 所属用户组
# 4 其他用户
#
# r(4) : 只读
# w(2) :只写
# x(1) :执行
#
# 我们可以指定给用户组里的一个用户给他设置权限 比如只给他读权限 例如 6 4 0
# -rw--r-----. 1 root user1 20971520 6月 16 17:33 txt
# 6 4 0 给user1这个用户组 设置txt文件为只读权限
# 而其他用户没有任何权限、那么他就可以读取这个文件 但不能进行其他操作
#
# 亦或者 不给某个用户任何权限 其他用户权限正常 例如 6 0 4
# -rw-----r--. 1 root user1 20971520 6月 16 17:33 txt
# 6 0 4 不给user1这个用户组任何权限 其他用户设置txt文件为只读权限
# 这个用户没有任何权限 而其他用户是可读权限
#
#
# [root@python ~]# useradd user1
# [root@python ~]# useradd user2
# [root@python ~]# useradd user3
#
#
#
# chmod : 修改文件权限
# chmod 755 [文件路径]
# chown : 修改所属用户及用户组
# chown 用户.用户组 [文件路径]
#
#
# 4 4 0
# -r--r-----. 1 test user1 20971520 6月 16 17:33 txt
# -rw-r--r--. 1 root root 41943040 6月 16 17:33 txt1
# -rwxr-xr-x. 1 root root 62914560 6月 16 17:33 txt2
# [root@python test]# find ./ -perm 440 # 权限为440
# ./txt
# [root@python test]# find ./ -perm 644
# ./txt1
# ./txt2
#
#
chmod : 修改文件权限
chmod 755 [文件路径]
chown : 修改所属用户及用户组
chown 用户.用户组 [文件路径]
8、处理查询结果
# # 直接跟命令 -跟ls是查看文件详情
# [root@python test]# find ./ -perm 755 -ls
# 202362858 0 drwxr-xr-x 2 root root 41 6月 16 17:59 ./
# 134514204 61440 -rwxr-xr-x 1 root root 62914560 6月 16 17:33 ./txt2
#
#
# # exec(推荐)
# # {}:代表前面查询出来的内容 /opt/ 路径 \ 为固定搭配
# find ./ -size +50M -exec cp {} /opt/ \;
#
#
# # 使用管道
# # xargs是将前面命令执行的结果先用一个{}来保存,然后用{}取出来处理
# find ./ -size +50M | xargs -I {} cp {} /mnt/ # cp 复制到/mnt/路径下
[Linux文件管理之(高级)、?件查找]