find 查找某个目录,但是不包括这个目录本身?

问题描述:

 

想要查找某个目录下的内容,但是发现:

 

[root@nctest-snap-test-02 mysql]# find /data/backup/mysql/
/data/backup/mysql/    # 包含目录本身
/data/backup/mysql/01
/data/backup/mysql/02
/data/backup/mysql/03
[root@nctest-snap-test-02 mysql]# 

 

就会包含目录本身!如果要对目录的时间进行匹配、删除,就可能将目录本身给删除。

 

问题解决:

 

所以,大概有2种解决方法。

 

方法1:使用 *

 

[root@nctest-snap-test-02 mysql]# find /data/backup/mysql/*
/data/backup/mysql/01
/data/backup/mysql/02
/data/backup/mysql/03
[root@nctest-snap-test-02 mysql]# 

这样,也不包括目录本身,但是,也存在一个问题,当目录是空的时候会报错

 

[root@nctest-snap-test-02 mysql]# find /data/backup/mysql/*
find: ‘/data/backup/mysql/*’: 没有那个文件或目录
[root@nctest-snap-test-02 mysql]# 

 

再看方法2:

 

使用 ! -path ,去除某些目录

 

[root@nctest-snap-test-02 mysql]# find /data/backup/mysql/ ! -path /data/backup/mysql/
/data/backup/mysql/01
/data/backup/mysql/02
/data/backup/mysql/03
[root@nctest-snap-test-02 mysql]# 

 

如果目录是空的,也不会报错

 

[root@nctest-snap-test-02 mysql]# find /data/backup/mysql/ ! -path /data/backup/mysql/
[root@nctest-snap-test-02 mysql]# 

 

建议第2种解决方法。

posted @ 2022-11-29 18:45  Zhai_David  阅读(308)  评论(0编辑  收藏  举报