1. 程式人生 > 其它 >find 查詢某個目錄,但是不包括這個目錄本身?

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種解決方法。