La commande find est l'une de mes commandes préférées. Elle peut facilement trouver les fichiers que je souhaite rechercher. Elle peut prendre en charge trop de méthodes de recherche, telles que le nom du fichier, la taille du fichier, le type de fichier, etc. Ensuite, jetons un coup d’œil.
Syntaxe : find [chemin de recherche] [options] [action]
La commande find n'a pas trop d'options. Aujourd'hui, je ne parlerai que de certaines options couramment utilisées.
Recherche par nom de fichier
L'option de recherche par nom de fichier est -name, qui prend en charge une recherche régulière simple.
Par exemple, je sais que locale.conf est enregistré dans le répertoire /etc, mais j'ai oublié le chemin spécifique. Ensuite,
# find /etc/ -name locale.conf/etc/locale.conf
peut trouver le chemin spécifique du fichier.
Maintenant, je veux savoir combien de fichiers php il y a dans un certain répertoire, puis je peux utiliser la commande suivante pour le compléter.
# find default -name *.php | wc -l122
ou option -o
Voici une autre option, -o, qui signifie ou, généralement la valeur par défaut est entre les options de recherche. Ils ont tous signifie "et". Regardons un exemple pour trouver le nombre total de fichiers php ou js dans un certain répertoire.
# find default -name *.php -o -name *.js | wc -l225
Recherche basée sur le type de fichier et la profondeur du répertoire
Vous devez utiliser l'option -type pour rechercher les types de fichiers couramment utilisés. f (fichier), d (répertoire). Une autre option est introduite, -maxdegree indique le nombre maximum de répertoires récursifs.
# find ./ -maxdepth 1 -type d././default./default.bak
Option négative !
# find ./ -maxdepth 1 ! -type f././default./default.bak
Recherche liée au temps
与时间有关的选项: | 共有-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 {} \;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!