find命令之perm引數

2022-09-23 02:33:11 字數 3352 閱讀 8317

perm引數有3種型別

1. -perm 644

這種型別是精準匹配,只把許可權是644的檔案和目錄取出來

[root@centos6 ~]# find . -perm 644 -ls

1703939 4 -rw-r--r-- 1 root root 3384 jan 23 20:24 ./install.log.syslog

1703940 4 -rw-r--r-- 1 root root 18 may 20 2009 ./.bash_logout

1703941 4 -rw-r--r-- 1 root root 176 may 20 2009 ./.bash_profile

1703943 4 -rw-r--r-- 1 root root 100 sep 23 2004 ./.cshrc

1703938 12 -rw-r--r-- 1 root root 8901 jan 23 20:26 ./install.log

1703948 4 -rw-r--r-- 1 root root 6 jan 24 02:34 ./aaa

1703944 4 -rw-r--r-- 1 root root 129 dec 4 2004 ./.tcshrc

1703942 4 -rw-r--r-- 1 root root 176 sep 23 2004 ./.bashrc

[root@centos6 ~]#

2. -perm -644

這種型別的匹配意思是:所有者的許可權至少是讀寫,並且群組的許可權至少是讀,其他人的許可權至少是讀,三個是與的關係。但是所有者的許可權可以是讀寫執行。只要包括讀寫許可權即可,所以例如許可權777的檔案也可以匹配,因為它包含644許可權。

[root@centos6 ~]# find . -perm -644 -ls

1703953 4 -rwxr-xr-x 1 root root 25 feb 9 23:44 ./ntpdate.sh

1703939 4 -rw-r--r-- 1 root root 3384 jan 23 20:24 ./install.log.syslog

1703940 4 -rw-r--r-- 1 root root 18 may 20 2009 ./.bash_logout

1703941 4 -rw-r--r-- 1 root root 176 may 20 2009 ./.bash_profile

1703943 4 -rw-r--r-- 1 root root 100 sep 23 2004 ./.cshrc

1703938 12 -rw-r--r-- 1 root root 8901 jan 23 20:26 ./install.log

1703949 4 drwxrwxrwx 2 root root 4096 mar 20 11:48 ./test

1703948 4 -rw-r--r-- 1 root root 6 jan 24 02:34 ./aaa

1703944 4 -rw-r--r-- 1 root root 129 dec 4 2004 ./.tcshrc

1703942 4 -rw-r--r-- 1 root root 176 sep 23 2004 ./.bashrc

[root@centos6 ~]#

3.-perm +644(centos7 -perm /644)

這種寫法的意思是:只要所有者滿足讀寫許可權,或者群組滿足讀許可權,所有者滿足讀許可權。就是說只要滿足乙個條件就可以匹配出來,所有者許可權為7的也可以匹配出來。

[root@df~/test 11:56:09]$ ll

total 0

-rwxrwxrwx. 1 root root 0 mar 20 11:03 a

-rwxrw-rwx. 1 root root 0 mar 20 11:03 b

-rwxr--r--. 1 root root 0 mar 20 11:03 c

----------. 1 root root 0 mar 20 11:03 d

drwxr-xr-x. 2 root root 42 mar 20 11:51 test

[root@df~/test 11:56:14]$ find . -perm /111

./a./b

./c./test

[root@dengfan ~/test 11:56:24]$

可以看出來至少有1位執行許可權就可以匹配出來!

假如我要取乙個目錄下所有人都沒有寫許可權的檔案和目錄該怎麼取呢按照通常的想法是find . ! -perm -111。但是這條命令的意思是取出至少有一位沒有執行許可權的檔案和目錄!

然後測試一下!的結果,會發現還是有帶執行許可權的檔案

[root@df ~/test 12:01:03]$ find . ! -perm -111 -ls

100679105 0 -rwxrw-rwx 1 root root 0 mar 20 11:03 ./b

100679106 0 -rwxr--r-- 1 root root 0 mar 20 11:03 ./c

100679107 0 ---------- 1 root root 0 mar 20 11:03 ./d

694655 0 -rw-r--r-- 1 root root 0 mar 20 11:51 ./test/a

890201 0 -rw-r--r-- 1 root root 0 mar 20 11:51 ./test/b

890202 0 -rw-r--r-- 1 root root 0 mar 20 11:51 ./test/c

890203 0 -rw-r--r-- 1 root root 0 mar 20 11:51 ./test/d

[root@df ~/test 12:01:10]$

正確做法是對/111取反,邏輯是對至少有1位執行許可權取反,就是所有位都沒有執行許可權

[root@df~/test 12:04:12]$ find . ! -perm /111 -ls

100679107 0 ---------- 1 root root 0 mar 20 11:03 ./d

694655 0 -rw-r--r-- 1 root root 0 mar 20 11:51 ./test/a

890201 0 -rw-r--r-- 1 root root 0 mar 20 11:51 ./test/b

890202 0 -rw-r--r-- 1 root root 0 mar 20 11:51 ./test/c

890203 0 -rw-r--r-- 1 root root 0 mar 20 11:51 ./test/d

[root@df~/test 12:05:23]$

總結:取出所有沒有執行許可權的檔案:find . ! -perm /111

取出至少一位執行許可權的檔案:find . ! -perm -111

find命令中引數perm的用法

按照檔案許可權模式用 perm選項,按檔案許可權模式來查詢檔案的話。最好使用八進位制的許可權表示法。如在當前目錄下查詢檔案許可權位為755的檔案,即檔案屬主可以讀 寫 執行,其他使用者可以讀 執行的檔案,可以用 de find perm 755 printde 還有一種表達方法 在八進位制數字前面要...

find命令中引數perm的用法

按照檔案許可權模式用 perm選項,按檔案許可權模式來查詢檔案的話。最好使用八進位制的許可權表示法。如在當前目錄下查詢檔案許可權位為755的檔案,即檔案屬主可以讀 寫 執行,其他使用者可以讀 執行的檔案,可以用 de find perm 755 printde 還有一種表達方法 在八進位制數字前面要...

find命令中引數perm的用法

按照檔案許可權模式用 perm選項,按檔案許可權模式來查詢檔案的話。最好使用八進位制的許可權表示法。如在當前目錄下查詢檔案許可權位為755的檔案,即檔案屬主可以讀 寫 執行,其他使用者可以讀 執行的檔案,可以用 de find perm 755 printde 還有一種表達方法 在八進位制數字前面要...