Maison >Tutoriel système >Linux >7 utilisations puissantes de la commande Find sous Linux

7 utilisations puissantes de la commande Find sous Linux

WBOY
WBOYavant
2024-02-15 08:30:03438parcourir

D'accord, je peux essayer de faire une version pseudo-originale profonde de ce paragraphe. Voici ma version modifiée :

Sous Linux, la commande find fait partie des opérations que les développeurs back-end doivent maîtriser, sauf si vous utilisez Windows Server.

C'est également un sujet courant dans les entretiens techniques. Voici une vraie question :

Si vous disposez d'un répertoire appelé logs sur votre serveur Linux, comment y supprimer les fichiers journaux consultés pour la dernière fois il y a plus d'un an ? 🤔

Cette situation est très courante, mais étonnamment, tous les développeurs ne peuvent pas écrire clairement cette commande dans l'interview.

Réponse : Tout d’abord, nous devons utiliser la commande cd pour entrer dans le répertoire correspondant. Ensuite, la commande est la suivante :

linuxmi@linuxmi:~/www.linuxmi.com$ find . -type f -atime +365 -exec rm -rf {} \;
Linux 中 find 命令的 7 个强大用途

Si vous ne comprenez pas entièrement les commandes ci-dessus, ne vous inquiétez pas. Cet article présentera 7 utilisations pratiques de la commande find afin que vous puissiez éventuellement la maîtriser. Si vous le savez déjà, la lecture de cet article sera un bon rappel.

1. Rechercher des fichiers en fonction du nom de fichier ou d'une expression régulière

Commençons par l’utilisation la plus simple. Pour rechercher des fichiers par un nom spécifique, la commande est :

linuxmi@linuxmi:~/www.linuxmi.com$ find . -name linuxmi.sh
Linux 中 find 命令的 7 个强大用途

Le symbole . dans le code ci-dessus représente le chemin actuel. Si nous voulons rechercher des fichiers sous un autre chemin, il suffit de préciser :

linuxmi@linuxmi:~/www.linuxmi.com$ find /home/linuxmi/linuxmi.com -name linuxmi.png
Linux 中 find 命令的 7 个强大用途

Comment retrouver toutes les images au format png ? Utilisez des expressions régulières :

find /home/linuxmi/linuxmi.com -name "*.png"

Par défaut, la commande find recherche les fichiers normaux, mais il est préférable de spécifier le type pour que tout soit plus clair :

find /home/linuxmi/linuxmi.com  -type f -name "*.png"

2. Trouvez différents types de fichiers

En plus de rechercher des fichiers ordinaires, nous pouvons également rechercher d'autres types de fichiers en spécifiant l'option -type.

Par exemple annuaire :

find . -type d -name "linuxmi*"

ou lien symbolique :

find . -type l -name "linuxmi*"

3. Rechercher des fichiers par horodatage spécifique

Pour rechercher des fichiers par un horodatage spécifique, nous devons connaître 3 horodatages différents dans les systèmes Linux :

Horodatage d'accès (atime) : L'heure à laquelle le fichier a été lu pour la dernière fois. Horodatage de modification (mtime) : heure à laquelle le contenu du fichier a été modifié pour la dernière fois. Modifier l'horodatage (ctime) : métadonnées d'un fichier, telles que la date de sa dernière modification, telles que la propriété, l'emplacement, le type de fichier et les paramètres d'autorisation.

Donc, tout comme la question d'entretien mentionnée au début, pour rechercher les fichiers datant de plus d'un an, nous pouvons écrire la commande suivante :

linuxmi@linuxmi:~$ find . -type f -atime +365
Linux 中 find 命令的 7 个强大用途

Si nous devons rechercher des fichiers dont l'heure remonte exactement à 5 jours, n'incluez pas le signe + car il signifie "supérieur à".

linuxmi@linuxmi:~$ find . -type f -mtime 5
Linux 中 find 命令的 7 个强大用途

Évidemment, le signe + signifie « supérieur à » et le signe – signifie « inférieur à ». Nous pouvons donc rechercher des fichiers avec un délai compris entre 5 et 10 jours :

linuxmi@linuxmi:~$ find . -type f -ctime +5 -ctime -10
Linux 中 find 命令的 7 个强大用途

4. Rechercher des fichiers par taille de fichier

L'option

-size nous permet de rechercher des fichiers selon une taille spécifique. On peut préciser son unité de mesure en utilisant la convention suivante :

  • b:512字节块(默认)
  • c:字节
  • w:两字节单词
  • k:千字节
  • M:兆字节
  • G:千兆字节

与按时间戳查找文件类似,+号表示“大于”,-号表示“小于”。例如,要查找大小在10兆字节和1千兆字节之间的文件:

find . -type f -size +10M -size -1G

5、按权限查找文件

适当控制文件的权限是Linux管理员的重要任务。find命令的-perm选项可以帮助我们按特定权限搜索文件:

find . -type f -perm 777

例如,上述命令将搜索所有具有777权限的文件,这意味着文件对其所有者、组和所有用户具有读、写和执行权限。

6、按文件所有者查找文件

这个任务很简单。我们只需要在-user选项中指定一个用户名。例如,以下命令将找到所有属于 linuxmi 的文件:

find -type f -user linuxmi

7、在查找文件后执行命令

在大多数情况下,我们希望在找到所需文件后执行一些后续操作,例如删除它们、检查它们的详细信息等等。-exec命令使所有这些操作变得更加简单。

现在,为了理解如何使用它,让我们回到之前提到的面试问题:

find . -type f -atime +365 -exec rm -rf {} ;

上述命令中-exec选项后面是rm -rf,用于删除文件。{}是找到的结果的占位符。

注意:占位符{}非常重要,特别是如果你想要删除文件。因为如果你不使用它,命令将对所有文件执行,而不仅仅是通过find命令找到的文件。

为了尝试一下,在终端上执行以下两个命令并检查它们的结果有什么不同:

一个使用了占位符:

find . -type f -atime +5 -exec ls {} ;

另一个没有使用:

find . -type f -atime +5 -exec ls ;

跟在-exec选项后面的命令必须以分号结束。正如我们所知,转义字符用于取消单个字符的特殊含义。在Linux中,反斜杠\被用作转义字符。因此,我们将其用于分号字符。

总结

阅读完find命令的7个用途后,之前提到的面试问题现在看起来非常简单了。现在你能直接写出答案并清楚地解释吗?

find . -type f -atime +365 -exec rm -rf {};

感谢阅读。如果你喜欢,请关注Linux迷 www.linuxmi.com 以享受更多精彩文章。 🙂

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer