Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Dateisuchbefehl „find“ unter Linux

Dateisuchbefehl „find“ unter Linux

齐天大圣
齐天大圣Original
2020-06-04 09:53:03103Durchsuche

Der Suchbefehl ist einer meiner Lieblingsbefehle. Er kann die Dateien, die ich suchen möchte, leicht finden. Er kann zu viele Suchmethoden unterstützen, z. B. nach Dateiname, Dateigröße, Dateityp usw. warten. Als nächstes werfen wir einen Blick darauf.

Syntax: find [Suchpfad] [Optionen] [Aktion]

Der Suchbefehl enthält nicht zu viele Optionen. Heute werde ich nur über einige häufig verwendete Optionen sprechen.

Suche nach Dateinamen

Die Option zur Suche nach Dateinamen ist -name, die eine einfache reguläre Suche unterstützt.

Ich weiß zum Beispiel, dass locale.conf im Verzeichnis /etc gespeichert ist, aber ich habe den spezifischen Pfad vergessen. Dann kann

# find /etc/ -name locale.conf/etc/locale.conf

den spezifischen Pfad der Datei herausfinden.

Jetzt möchte ich wissen, wie viele PHP-Dateien sich in einem bestimmten Verzeichnis befinden, dann kann ich den folgenden Befehl verwenden, um es zu vervollständigen.

# find default -name *.php | wc -l122

oder Option -o

Hier ist eine weitere Option, -o, was bedeutet, oder, im Allgemeinen ist die Standardeinstellung zwischen den Suchoptionen Sie alle bedeuten „und“. Schauen wir uns ein Beispiel an, um die Gesamtzahl der PHP- oder JS-Dateien in einem bestimmten Verzeichnis zu ermitteln.

# find default -name *.php -o -name *.js | wc -l225

Suche basierend auf Dateityp und Verzeichnistiefe

Sie müssen die Option -type verwenden, um häufig verwendete Dateitypen zu finden f (Datei), d(Verzeichnis). Eine weitere Option wird eingeführt: -max Depth gibt die maximale Anzahl rekursiver Verzeichnisse an.

# find ./  -maxdepth 1  -type d././default./default.bak

Negative Option!

# find ./  -maxdepth 1 ! -type f././default./default.bak

Zeitbezogene Suche

与时间有关的选项: 共有-atime, -ctime 与-mtime ,以-mtime 说明
-mtime n  n 为数字,意义为在n 天之前的『一天之内』被更动过内容的文件;
-mtime +n  列出在n 天之前(不含n 天本身)被更动过内容的文件文件名   
-mtime -n 列出在n 天之内(含n 天本身)被更动过内容的文件文件名
-newer file  file 为一个存在的文件,列出比file 还要新的文件文件名   

  这个选项很有作用,比如进行数据定时备份时,只保留最近7天的数据,超过7天的自动删除就会用到该选项。注意+n表示n天之前,-n表示n天之内。

# find $bakdir -name "*.sql.bz2" -type f -mtime +7 -exec rm -rf {} \;

根据用户名、组来查找

与使用者或群组名称有关
-uid n   n 为数字,这个数字是使用者的帐号ID,亦即UID    
-gid n  n 为数字,这个数字是群组名称的ID,亦即GID    
-user name  name 为使用者帐号名称,例如dmtsai   
-group name  name 为群组名称,例如users ;    
-nouser 寻找文件的拥有者不存在 的人!    
-nogroup  寻找文件的拥有群组不存在于/etc/group 的文件!    

  查找某目录下,所有者不是www的文件有哪些。

find /home/wwwroot/default ! -user www | wc -l

根据文件大小查找

按文件大小查找使用-size选项,比如查找大于1M的文件,那么使用-size +1M,如果查找小于1K的,那么使用-size -1K

# find /home/wwwroot/default -size +1M
# find /home/wwwroot/default -size -1k

根据文件权限查找

  • -perm mode 搜寻文件权限『刚好等于』 mode 的文件,这个mode 为类似chmod的属性值,举例来说, -rwsr-xr-x 的属性为4755 !

  • -perm -mode    搜寻文件权限『必须要全部囊括mode 的权限』的文件,举例来说,我们要搜寻-rwxr--r-- ,亦即0744 的文件,使用-perm -0744,当一个文件的权限为-rwsr-xr-x ,亦即4755 时,也会被列出来,因为-rwsr-xr-x 的属性已经囊括了-rwxr--r-- 的属性了。    

  • -perm /mode    搜寻文件权限『包含任一mode 的权限』的文件,举例来说,我们搜寻-rwxr-xr-x ,亦即-perm /755 时,但一个文件属性为-rw-------也会被列出来,因为他有-rw.... 的属性存在!    

我们知道,文件的权限一般为644,目录的权限一般为755。如果,不是等于这个权限,可能就会有点问题,那么我们来找找看,是否有这类文件。

find /home/wwwroot/default ! -perm 644 -type d -exec ls -ld {} \;
# 查找权限不是644的文件,并将其修改为644
find /home/wwwroot/default ! -perm 644 -type f | xargs -n 10 chmod 644;

动作执行

其实这个命令上面已经使用到了,使用-exec选项,然后接命令,最后要以{} ;结尾,比如

find /home/wwwroot/default ! -perm 644 -type d -exec ls -ld {} \;

其他

find还支持正则(-regex)查找文件名,还可以不区分大小写(-iregex);

使用-empty可以查找文件大小为0的文件。

# find . -empty -exec ls -l {} \;

Das obige ist der detaillierte Inhalt vonDateisuchbefehl „find“ unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn