云计算Day06Linux中find,tree命令

1.find命令
Linux find 命令用于在指定目录下查找文件和目录。

它可以使用不同的选项来过滤和限制查找的结果。

2.基本语法
find   path  -option  【 -print 】  【 -exec   -ok   |xargs  |grep  】 【  command  {} \;  】

find [⽂件路径] [选项 选项的值]

-name *

-type f|d

options常用的有下选项:
-name   filename               #查找名为filename的文件
-perm                                #按执行权限来查找
-user    username             #按文件属主来查找
-group groupname            #按组来查找
-mtime   -n +n                   #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime    -n +n                   #按文件访问时间来查找文件,-n指n天以内,+n指n天以前
-ctime    -n +n                  #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup                          #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser                            #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-type    b/d/c/p/l/f             #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size      n[c]                    #查长度为n块[或n字节]的文件
-mount                            #查文件时不跨越文件系统mount点
-follow                            #如果遇到符号链接文件,就跟踪链接所指的文件
-prune                            #忽略某个目录
案例,找到httpd.conf⽂件

[root@localhost ~]# find / -name "httpd.conf" -type f

# ⽆法找到,发现是没有安装httpd服务

[root@localhost ~]# yum install -y httpd

# 安装htppd服务

[root@localhost ~]# find / -name "httpd.conf" -type f

# 下⾯就是查找出的⽂件

/etc/httpd/conf/httpd.conf

/usr/lib/tmpfiles.d/httpd.conf

# 将/范围换成/etc/⽬录范围,这样查找更快,更加节省计算⾃资源

[root@localhost ~]# find /etc/ -name "httpd.conf" -type f

/etc/httpd/conf/httpd.conf

3.*通配符
在linux 系统中,如果要查找的⽂件的名称不清晰,可以使⽤部分⽂件名+*搜索

案例 获取/etc/中以.conf结尾的⽂件

[root@localhost ~]# find /etc/ -name "*.conf" -type f

/etc/resolv.conf
/etc/libaudit.conf
/etc/depmod.d/dist.conf
/etc/dracut.conf
/etc/prelink.conf.d/nss-softokn-prelink.conf
 
/etc/prelink.conf.d/fipscheck.conf
/etc/prelink.conf.d/grub2.conf
/etc/modprobe.d/tuned.conf
/etc/modprobe.d/firewalld-sysctls.conf
/etc/modprobe.d/dccp-blacklist.conf
/etc/rsyslog.d/listen.conf
/etc/systemd/bootchart.conf
/etc/systemd/coredump.conf
/etc/systemd/journald.conf
/etc/systemd/logind.conf
/etc/systemd/system.conf
/etc/systemd/user.conf
/etc/host.conf
/etc/dbus-1/system.d/org.freedesktop.hostname1.conf
/etc/dbus-1/system.d/org.freedesktop.import1.conf
/etc/dbus-1/system.d/org.freedesktop.locale1.conf
/etc/dbus-1/system.d/org.freedesktop.login1.conf
/etc/dbus-1/system.d/org.freedesktop.machine1.conf
/etc/dbus-1/system.d/org.freedesktop.systemd1.conf
/etc/dbus-1/system.d/org.freedesktop.timedate1.conf
/etc/dbus-1/system.d/org.freedesktop.PolicyKit1.conf
/etc/dbus-1/system.d/wpa_supplicant.conf
/etc/dbus-1/system.d/nm-dispatcher.conf
/etc/dbus-1/system.d/nm-ifcfg-rh.conf
/etc/dbus-1/system.d/org.freedesktop.NetworkManager.conf
/etc/dbus-1/system.d/teamd.conf
/etc/dbus-1/system.d/com.redhat.tuned.conf
/etc/dbus-1/system.d/FirewallD.conf
/etc/dbus-1/session.conf
/etc/dbus-1/system.conf
/etc/udev/udev.conf
/etc/lvm/lvm.conf
/etc/lvm/lvmlocal.conf
/etc/NetworkManager/NetworkManager.conf
/etc/X11/xorg.conf.d/00-keyboard.conf
/etc/pki/ca-trust/ca-legacy.conf
/etc/ld.so.conf
/etc/ld.so.conf.d/mariadb-x86_64.conf
/etc/ld.so.conf.d/kernel-3.10.0-862.el7.x86_64.conf
/etc/ld.so.conf.d/bind-export-x86_64.conf
/etc/ld.so.conf.d/kernel-3.10.0-1160.119.1.el7.x86_64.conf
/etc/nsswitch.conf
/etc/sestatus.conf
/etc/yum/protected.d/systemd.conf
/etc/yum/pluginconf.d/fastestmirror.conf
/etc/yum/pluginconf.d/langpacks.conf
/etc/yum/version-groups.conf
/etc/krb5.conf
/etc/sysctl.conf
/etc/security/access.conf
/etc/security/chroot.conf
/etc/security/group.conf
/etc/security/limits.conf
/etc/security/limits.d/20-nproc.conf
/etc/security/namespace.conf
/etc/security/pam_env.conf
/etc/security/sepermit.conf
搜索以http开头的⽂件

[root@localhost ~]# find /etc/ -name "http*" -type f
/etc/sysconfig/httpd
/etc/logrotate.d/httpd
/etc/httpd/conf/httpd.conf
find命令的exec参数
案例:删除系统/var/log/ 10天之前的⽇志,格式都是.log⽂件

⽅法1 报错,rm不⽀持这种写法

⽅法2 rm和ls不⽀持管道

⽅法3 使⽤xargs 将查询结果交给rm

方法4 使用nd执行 -exec 语法 find 文件路径

#查看⽬录中的txt⽂件
[root@localhost opt]# ls -l *.txt
#没有e.txt⽂件,在前⾯被删除了
-rw-r--r--. 1 root root 0 7⽉  14 13:54 a.txt
-rw-r--r--. 1 root root 0 7⽉  13 00:00 b.txt
-rw-r--r--. 1 root root 0 7⽉  12 00:00 c.txt
-rw-r--r--. 1 root root 0 7⽉  11 00:00 d.txt
# 创建⽂件并且指定⽂件修改⽇期
[root@localhost opt]# touch -m -d "2024-7-10 00:00" e.txt
[root@localhost opt]# ls -l 
总⽤量 0
-rw-r--r--. 1 root root 0 7⽉  14 13:54 a.txt
-rw-r--r--. 1 root root 0 7⽉  13 00:00 b.txt
-rw-r--r--. 1 root root 0 7⽉  12 00:00 c.txt
-rw-r--r--. 1 root root 0 7⽉  11 00:00 d.txt
 
-rw-r--r--. 1 root root 0 7⽉  10 00:00 e.txt
# 查找三天以前的⽂件
[root@localhost opt]# find /opt/ -name "*.txt" -type f -mtime +3
/opt/e.txt
# 使⽤-exec ⽂件调⽤rm函数 {}表示前⾯find查到的内容 \;表示标识符
# 这⾥在{}后⾯没有打空格报错了,在{}后应该打空格
[root@localhost opt]# find /opt/ -name "*.txt" -type f -mtime +3 -exec rm -rf {}\;
find: 遗漏“-exec”的参数
[root@localhost opt]# find /opt/ -name "*.txt" -type f -mtime +3 -exec rm -rf {} \;
总⽤量 0
-rw-r--r--. 1 root root 0 7⽉  14 13:54 a.txt
-rw-r--r--. 1 root root 0 7⽉  13 00:00 b.txt
-rw-r--r--. 1 root root 0 7⽉  12 00:00 c.txt
-rw-r--r--. 1 root root 0 7⽉  11 00:00 d.txt

1、tree命令作用
以树状结构查看目录下的内容

2.tree命令优点
使用tree命令可以很直接看到目录下的内容,不用进入每个目录然后ls看一下了

3、tree命令安装
yum -y install tree 

4、tree命令的使用
Linux tree命令用于以树状图列出目录的内容。

执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。

语法:

tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式>][目录...]
-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-L level 限制目录显示层级。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P<范本样式> 只显示符合范本样式的文件或目录名称。
-q 用"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。
以树状图列出当前目录结构。可直接使用如下命令:tree

 
[root@localhost opt]#  tree /var/log/
/var/log/
├── anaconda
│   ├── anaconda.log
│   ├── ifcfg.log
│   ├── journal.log
│   ├── ks-script-foxDg3.log
│   ├── ks-script-xoNdUE.log
│   ├── packaging.log
│   ├── program.log
│   ├── storage.log
│   ├── syslog
│   └── X.log
├── audit
│   └── audit.log
├── boot.log
├── boot.log-20240617
├── boot.log-20240711
├── boot.log-20240714
├── btmp
├── btmp-20240711
├── chrony
├── cron
├── cron-20240711
├── cron-20240714
├── dmesg
├── dmesg.old
├── firewalld
├── grubby
├── grubby_prune_debug
├── httpd
├── lastlog
├── maillog
├── maillog-20240711
├── maillog-20240714
├── messages
├── messages-20240711
├── messages-20240714
├── rhsm
 
 
├── secure
├── secure-20240711
├── secure-20240714
├── spooler
├── spooler-20240711
├── spooler-20240714
├── tallylog
├── tuned
│   └── tuned.log
├── vmware-network.1.log
├── vmware-network.2.log
├── vmware-network.3.log
├── vmware-network.4.log
├── vmware-network.5.log
├── vmware-network.6.log
├── vmware-network.log
├── vmware-vgauthsvc.log.0
├── vmware-vmsvc.log
├── vmware-vmsvc-root.log
├── vmware-vmtoolsd-root.log
├── wtmp
└── yum.log    
只查看当前目录下内容

tree -L 1
列出权限属性

tree -L 1 -C -p
查看3层目录下内容

tree -L 3 -C -p
列出相对路径

tree -L 3 -C -p -f

  • 23
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值