Maison > Opération et maintenance > exploitation et maintenance Linux > Comment utiliser la commande Linux Find

Comment utiliser la commande Linux Find

青灯夜游
Libérer: 2021-06-25 14:02:49
original
17725 Les gens l'ont consulté

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.

Comment utiliser la commande Linux Find

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é.

Format de la commande find :

find   path  -option  【 -print 】  【 -exec   -ok   |xargs  |grep  】 【  command  {} \;  】
Copier après la connexion

Paramètres de la commande find :

1)path : Le chemin du répertoire à rechercher.

  • ~ représente le répertoire $HOME
  • représente le répertoire courant
  • / représente le répertoire racine
<. 🎜>2 )

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                            #忽略某个目录
Copier après la connexion

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 &#39;[A-Z]*.txt&#39; -print   
Copier après la connexion

Dans /etc et ses sous-répertoires, recherchez les fichiers commençant par host


$ find /etc -name &#39;host*&#39; -print  
Copier après la connexion

Dans le répertoire $HOME et ses sous-répertoires, recherchez tous les fichiers


$ find ~ -name &#39;*&#39; -print
Copier après la connexion

Dans 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" -print
Copier après la connexion

2. 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" -print  
Copier après la connexion

Dans le répertoire actuel répertoire et recherchez les fichiers txt dans des sous-répertoires autres que aa et bb


 $ find . \( -path &#39;./dir0&#39; -o -path &#39;./dir1&#39; \) -a -prune -o -name &#39;*.txt&#39; -print
Copier après la connexion

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
Copier après la connexion

ou

find . -name *.txt -type f -print
Copier après la connexion

Lien 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 -print
Copier après la connexion

Rechercher 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=w
Copier après la connexion

Rechercher 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 -print
Copier après la connexion

5. Par propriétaire et groupe

Rechercher fichiers dont le propriétaire est www

$ find / -user www -type f -print
Copier après la connexion

Rechercher les attributs Principaux fichiers supprimés


$ find / -nouser -type f -print
Copier après la connexion

Rechercher les fichiers appartenant au groupe mysql


$ find / -group mysql -type f -print
Copier après la connexion

Rechercher les fichiers supprimés du groupe d'utilisateurs


$ find / -nogroup -type f -print
Copier après la connexion

6. Rechercher par heure
Rechercher les fichiers qui ont été modifiés dans les 2 jours

$ find . -mtime -2 -type f -print   
Copier après la connexion

Rechercher les fichiers qui ont a été modifié il y a 2 jours


 $ find . -mtime +2 -type f -print
Copier après la connexion

Rechercher les fichiers consultés dans la journée


$ find . -atime -1 -type f -print
Copier après la connexion

Rechercher les fichiers consultés il y a un jour

 $ find . -atime +1 -type f -print  
Copier après la connexion

Rechercher les fichiers dont le statut a été modifié au cours de la journée

$ find . -ctime -1 -type f -print   
Copier après la connexion

Rechercher les fichiers dont le statut a été modifié il y a un jour

$ find . -ctime +1 -type f -print  
Copier après la connexion

查找10分钟以前状态被改变的文件

$ find . -cmin +10 -type f -print
Copier après la connexion

7、按文件新旧   

查找比 aa.txt 新的文件

$ find . -newer "aa.txt" -type f -print   
Copier après la connexion

查找比 aa.txt 旧的文件

$ find . ! -newer "aa.txt" -type f -print   
Copier après la connexion

查找比aa.txt新,比bb.txt旧的文件

$ find . -newer &#39;aa.txt&#39; ! -newer &#39;bb.txt&#39; -type f -print
Copier après la connexion

8、按大小查找   

查找超过1M的文件

$ find / -size +1M -type f -print   
Copier après la connexion

查找等于6字节的文件

$ find . -size 6c -print   
Copier après la connexion

查找小于32k的文件

$ find . -size -32k -print
Copier après la connexion

9、执行命令   

1)查找 del.txt 并删除,删除前提示确认

$ find . -name &#39;del.txt&#39; -ok rm {} \;  
Copier après la connexion

2) 查找 aa.txt 并备份为aa.txt.bak

$ find . -name &#39;aa.txt&#39; -exec cp {} {}.bak \;
Copier après la connexion

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
Copier après la connexion

查当前目录下的所有普通文件,并在 - exec 选项中使用 ls -l 命令将它们列出

4)在 /logs 目录中查找更改时间在5日以前的文件并删除它们

$ find logs -type f -mtime +5 -exec   -ok   rm {} \;
Copier après la connexion

5)查询当天修改过的文件

# find   ./   -mtime   -1   -type f   -exec   ls -l   {} \;
Copier après la connexion

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
Copier après la connexion

关于 有没有 -print 的区别

加 -print

查找目录并列出目录下的文件(为找到的每一个目录单独执行ls命令,没有选项-print时文件列表前一行不会显示目录名称)

find /home -type d -print -exec ls {} \;
Copier après la connexion

不加 -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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal