Maison >Opération et maintenance >exploitation et maintenance Linux >Comment utiliser la commande Linux Find
Sous Linux, la commande find est utilisée pour rechercher des fichiers dans un répertoire spécifié. La syntaxe de base est "find path -option..". Toute chaîne précédant le paramètre sera considérée comme le nom du répertoire à trouver ; si vous utilisez cette commande sans définir de paramètre, la commande find recherchera les sous-répertoires et les fichiers dans le répertoire actuel.
L'environnement d'exploitation de ce tutoriel : système Red Hat Enterprise Linux 6.1, ordinateur Dell G3.
La commande Linux find est utilisée pour rechercher des fichiers dans le répertoire spécifié.
find path -option 【 -print 】 【 -exec -ok |xargs |grep 】 【 command {} \; 】
Paramètres de la commande find :
1)path : Le chemin du répertoire à rechercher.
print : Indique la sortie des résultats vers la sortie standard.
3)exec : Exécute la commande shell donnée par ce paramètre sur le fichier correspondant.
La forme est commande {};,Notez qu'il y a un espace entre {} et
4)ok : a le même effet as exec,
La différence est qu'avant d'exécuter la commande, une invite sera donnée pour permettre à l'utilisateur de confirmer s'il doit l'exécuter 5)|xargs Il a la même fonction que exec et sert de successeur
La différence est que|xargs est principalement utilisé pour entreprendre des opérations de suppression, tandis que -exec peut être utilisé pour la copie , déplacer, renommer, etc.
6)options : Indique la méthode de recherche
options Les options couramment utilisées incluent les options suivantes :-name filename #查找名为filename的文件 -perm #按执行权限来查找 -user username #按文件属主来查找 -group groupname #按组来查找 -mtime -n +n #按文件 更改时间 来查找文件,-n指n天以内,+n指n天以前 -atime -n +n #按文件 访问时间 来查找文件,-n指n天以内,+n指n天以前 -ctime -n +n #按文件 创建时间 来查找文件,-n指n天以内,+n指n天以前 -nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在 -nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存 -type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件 -size n[c] #查长度为n块[或n字节]的文件 -mount #查文件时不跨越文件系统mount点 -follow #如果遇到符号链接文件,就跟踪链接所指的文件 -prune #忽略某个目录Tout La chaîne avant le paramètre sera considérée comme le nom du répertoire à rechercher. Si vous utilisez cette commande sans définir de paramètres, la commande find recherchera les sous-répertoires et les fichiers dans le répertoire actuel. Et tous les sous-répertoires et fichiers trouvés seront affichés.
Ce qui suit utilise quelques exemples simples pour présenter l'utilisation courante de find :
1. Recherchez par nom
Dans le répertoire et les sous-répertoires actuels, recherchez les majuscules lettres fichiers txt commençant par des lettres
$ find . -name '[A-Z]*.txt' -printDans /etc et ses sous-répertoires, recherchez les fichiers commençant par host
$ find /etc -name 'host*' -printDans le répertoire $HOME et ses sous-répertoires, recherchez tous les fichiers
$ find ~ -name '*' -printDans le répertoire et les sous-répertoires courants, recherchez les fichiers txt qui ne commencent pas par out
$ find . -name "out*" -prune -o -name "*.txt" -print2. Recherche par répertoire Rechercher des fichiers txt dans des sous-répertoires autres que aa dans le répertoire courant
$ find . -path "./aa" -prune -o -name "*.txt" -printDans le répertoire actuel répertoire et recherchez les fichiers txt dans des sous-répertoires autres que aa et bb
$ find . \( -path './dir0' -o -path './dir1' \) -a -prune -o -name '*.txt' -print
Remarque : obligatoire dans 1 et 2 Ajouter espaces, sinon il y aura une erreur comme indiqué sur l'image
Vous pouvez ajouter -a ou pas à 3 endroits Dans le répertoire courant, plus dans le sous-répertoire, Rechercher les fichiers txt
$ find . ! -name "." -type d -prune -o -type f -name "*.txt" -print
ou
find . -name *.txt -type f -printLien convivial : explication détaillée de l'utilisation de la commande find -path -prune sous Linux 3. Recherche par autorisations Dans le répertoire et les sous-répertoires actuels, recherchez les fichiers dont le propriétaire dispose d'autorisations de lecture, d'écriture et d'exécution et d'autres fichiers dotés d'autorisations de lecture et d'exécution
$find . -perm 755 -printRechercher les fichiers pour lesquels l'utilisateur dispose d'autorisations d'écriture ou les fichiers ou répertoires pour lesquels les utilisateurs du groupe ont des autorisations d'écriture
find ./ -perm /220 find ./ -perm /u+w,g+w find ./ -perm /u=w,g=wRechercher par type (b/d/c/p/l/. f) Dans le répertoire courant et les sous-répertoires Répertoire, recherchez les fichiers de liens symboliques
$ find . -type l -print5. Par propriétaire et groupe
Rechercher fichiers dont le propriétaire est www
$ find / -user www -type f -printRechercher les attributs Principaux fichiers supprimés
$ find / -nouser -type f -printRechercher les fichiers appartenant au groupe mysql
$ find / -group mysql -type f -printRechercher les fichiers supprimés du groupe d'utilisateurs
$ find / -nogroup -type f -print
6. Rechercher par heure
Rechercher les fichiers qui ont été modifiés dans les 2 jours
$ find . -mtime -2 -type f -printRechercher les fichiers qui ont a été modifié il y a 2 jours
$ find . -mtime +2 -type f -printRechercher les fichiers consultés dans la journée
$ find . -atime -1 -type f -printRechercher les fichiers consultés il y a un jour
$ find . -atime +1 -type f -printRechercher les fichiers dont le statut a été modifié au cours de la journée
$ find . -ctime -1 -type f -printRechercher les fichiers dont le statut a été modifié il y a un jour
$ find . -ctime +1 -type f -print
查找10分钟以前状态被改变的文件
$ find . -cmin +10 -type f -print
7、按文件新旧
查找比 aa.txt 新的文件
$ find . -newer "aa.txt" -type f -print
查找比 aa.txt 旧的文件
$ find . ! -newer "aa.txt" -type f -print
查找比aa.txt新,比bb.txt旧的文件
$ find . -newer 'aa.txt' ! -newer 'bb.txt' -type f -print
8、按大小查找
查找超过1M的文件
$ find / -size +1M -type f -print
查找等于6字节的文件
$ find . -size 6c -print
查找小于32k的文件
$ find . -size -32k -print
9、执行命令
1)查找 del.txt 并删除,删除前提示确认
$ find . -name 'del.txt' -ok rm {} \;
2) 查找 aa.txt 并备份为aa.txt.bak
$ find . -name 'aa.txt' -exec cp {} {}.bak \;
3)查当前目录下的所有普通文件
# find . -type f -exec ls -l {} \; -rw-r–r– 1 root root 34928 2003-02-25 ./conf/httpd.conf -rw-r–r– 1 root root 12959 2003-02-25 ./conf/magic -rw-r–r– 1 root root 180 2003-02-25 ./conf.d/README
查当前目录下的所有普通文件,并在 - exec 选项中使用 ls -l 命令将它们列出
4)在 /logs 目录中查找更改时间在5日以前的文件并删除它们
$ find logs -type f -mtime +5 -exec -ok rm {} \;
5)查询当天修改过的文件
# find ./ -mtime -1 -type f -exec ls -l {} \;
6)查询文件并询问是否要显示
# find ./ -mtime -1 -type f -ok ls -l {} \; < ls … ./classDB.inc.php > ? y -rw-r–r– 1 cnscn cnscn 13709 1月 12 12:22 ./classDB.inc.php # find ./ -mtime -1 -type f -ok ls -l {} \; < ls … ./classDB.inc.php > ? n
关于 有没有 -print 的区别
加 -print
查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,没有选项-print时文件列表前一行不会显示目录名称)
find /home -type d -print -exec ls {} \;
不加 -print
相关推荐:《Linux视频教程》
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!