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种解决方法。