Maison  >  Article  >  Tutoriel système  >  Résumé de la commande pour trouver des fichiers sous système Linux, c'est génial !

Résumé de la commande pour trouver des fichiers sous système Linux, c'est génial !

WBOY
WBOYavant
2024-02-12 18:09:09433parcourir

La façon de trouver le chemin absolu d’une commande est d’utiliser la commande which. La commande which a une fonction très pratique, elle permet de trouver le chemin d'une commande donnée dans le paramètre PATH de la variable d'environnement. En utilisant la commande which, nous pouvons facilement obtenir les informations de chemin complet d’une commande. Ceci est utile pour les scripts et les programmes qui doivent exécuter des commandes spécifiques. Ainsi, en utilisant which command, nous pouvons facilement trouver et afficher le chemin absolu d’une commande donnée.

Linux 系统下 查找文件 命令总结,这个很哇塞!

[root@localhost ~]# which bash
/usr/bin/bash

[root@localhost ~]# which ls
alias ls='ls --color=auto'
    /usr/bin/ls

Rechercher un fichier spécifique :

La commande Whereis est utilisée pour localiser les chemins des programmes binaires, des fichiers de code source, des pages de manuel et d'autres fichiers d'instructions associés. Cette commande ne peut être utilisée que pour rechercher des noms de programmes

.
[root@localhost ~]# whereis --help

语法格式:[ whereis [选项] 文件名 ]

        -b              #只找二进制文件
        -m              #只找man文档
        -s              #只找源代码

Utilisez la commande Whereis -b pour rechercher des fichiers binaires et des manuels d'aide.

[root@localhost ~]# whereis -b ifconfig
ifconfig: /usr/sbin/ifconfig

[root@localhost ~]# whereis -m ifconfig
ifconfig: /usr/share/man/man8/ifconfig.8.gz

Fichiers de recherche de cache :

locate recherche une base de données /var/lib/mlocatedb. Cette base de données contient toutes les informations sur les fichiers locaux. Le système Linux crée automatiquement cette base de données et la met automatiquement à jour une fois par jour. Par conséquent, les derniers fichiers modifiés ne peuvent pas être trouvés à l'aide de la commande Locate. afin d'éviter cela. Dans ce cas, vous pouvez utiliser la commande Updatedb pour mettre à jour manuellement la base de données avant d'utiliser Locate. La commande Updateb mettra à jour le fichier selon /etc/updatedb.conf.

[root@localhost ~]# yum install -y mlocate
[root@localhost ~]# locate --help

语法格式:[ locate [选项] 文件名 ]

        -d 目录        #指定数据库所在的目录
        -i             #忽略大小写差异
        -r             #后面接正则表达式

Utilisez la commande Locate pour interroger un fichier.

[root@localhost ~]# updatedb 
[root@localhost ~]# locate /etc/passwd
/etc/passwd
/etc/passwd-

Parcourir les fichiers à trouver :

La commande find peut être considérée comme la commande de recherche la plus importante. Cette commande comporte de nombreux paramètres.

[root@localhost ~]# find --help

语法格式:[ find [目录] [属性] 文件名 ]

        -name         #按文件名查找
        -size         #根据大小查找
        -user         #根据属主查找
        -perm         #根据权限查找
        -type         #根据类型查找
        -time         #按时间查找
        -inum         #根据i节点查询
        -exec         #查找后执行命令

-name Recherche par nom de fichier :

Caractères génériques de requête courants

\*     #匹配任意一个或多个字符
?     #匹配任意一个字符
[]     #指定范围,外侧加引号

Recherchez les fichiers se terminant par .log dans le répertoire /var/.

[root@localhost ~]# find /var/ -name "*.log"
/var/log/tuned/tuned.log
/var/log/audit/audit.log
/var/log/anaconda/X.log
/var/log/anaconda/program.log
....省略....

Recherchez les fichiers dans le répertoire /root/ qui commencent par [1-3] et se terminent par .txt

[root@localhost ~]# ls
1.txt  2.txt  3.txt  Catalog  File

[root@localhost ~]# find /root/ -name "[1-3].txt"
/root/1.txt
/root/2.txt
/root/3.txt

Recherchez les fichiers dans le répertoire /etc/ commençant par 6 caractères arbitraires

[root@localhost ~]# find /etc/ -name "??????"
/etc/grub.d
/etc/grub.d/README
/etc/shells
/etc/init.d
....省略....

-taille Recherche basée sur la taille

单位是 block 数据块  一块是512字节
1M -> 1024k -> 2048 块  (1块是0.5k 也就是512字节)
100M -> 102400k -> 204800块

Recherchez les fichiers de moins de 10 Ko dans le répertoire /etc/

root@localhost ~]# find /etc/ -size -10k
/etc/crypttab
/etc/.pwd.lock
/etc/environment
....省略....

Recherchez des fichiers de plus de 1 Mo dans le répertoire /etc/

[root@localhost ~]# find /etc/ -size +1M   #查询大于1M的文件
/etc/udev/hwdb.bin
/etc/selinux/targeted/active/policy.kern
/etc/selinux/targeted/contexts/files/file_contexts.bin
/etc/selinux/targeted/policy/policy.31
....省略....

#注意:+-号如果没有,是精确到这么大,通常都会带上+或-号表示一个范围.

Recherche d'utilisateur basée sur le propriétaire et l'autorisation

Recherchez les fichiers appartenant à l'utilisateur wang dans le répertoire /root

[root@localhost ~]# find /root/ -user wang
/root/1.txt
/root/2.txt
/root/3.txt
#注意:系统中要存在该用户,否则会报错误.

Recherchez les fichiers avec l'autorisation 644 dans le répertoire /boot/

[root@localhost ~]# find /boot/ -perm 0644
/boot/grub2/device.map
/boot/grub2/i386-pc/gcry_rmd160.mod
/boot/grub2/i386-pc/acpi.mod
/boot/grub2/i386-pc/gcry_rsa.mod
....省略....

-type Recherche basée sur le type

-type f 二进制文件(普通文件)
-type l 软链接文件
-type d 目录

Recherchez le répertoire /usr/bin/, le type est un fichier binaire.

[root@localhost ~]# find /usr/bin/ -type f
/usr/bin/cp
/usr/bin/gzip
/usr/bin/alias
/usr/bin/csplit
/usr/bin/bash
....省略....

-time Recherche par heure

按天数   ctime  atime  mtime
按分钟   cmin   amin     mmin

  c  change   #表示属性被修改过:所有者、所属组、权限
  a  access   #被访问过(被查看过)
  m  modify   #表示内容被修改过

Recherchez les fichiers dans le répertoire /etc/ dont le contenu a été modifié dans les 120 minutes

[root@localhost ~]# find /etc/ -mmin -120
/etc/
/etc/resolv.conf
/etc/group-
/etc/gshadow-
/etc/group
/etc/gshadow
....省略....

Rechercher les fichiers dans le répertoire /etc/ dont les attributs ont été modifiés il y a 7 jours

[root@localhost ~]# find /etc/ -ctime +7
/etc/resolv.conf
/etc/group-
/etc/gshadow-
....省略....

-inum requête basée sur i node

Certains fichiers ont un grand nombre de liens physiques et ont le même i-node. Recherchez le numéro d'i-node de l'un des fichiers et supprimez-le immédiatement.

[root@localhost ~]# find ./ -inum 1024 -exec rm{} \;   #删除相同I节点的数据

-et ou connecteur logique

-a    (and 逻辑与)     
-o    (or  逻辑或)

Dans le répertoire /etc/, recherchez les fichiers de plus de 1 Ko et de moins de 10 Ko

[root@localhost ~]# find /etc/ -size +1k -a -size -10k
/etc/
/etc/grub.d/00_header
/etc/grub.d/20_ppc_terminfo
/etc/grub.d/00_tuned
/etc/rc.d/init.d/README
/etc/rc.d/init.d/netconsole
/etc/rc.d/init.d/network
/etc/pam.d
....省略....

-connecteur d'exécution de commande-exec

[查询格式] find  ...  -exec 命令 {}  \;

{}        #表示find查询的结果集
\         #是转义符,不使用命令别名,直接使用命令本身
;         #分号是表示语句的结束.

#注意:固定格式,只能这样写.注意中间的空格.
(公众号:网络工程师阿龙)-----------------------------------------------------------------
说明: 转义符的作用是什么?

在linux中有一个别名机制,如rm删除文件,执行的却是rm -i(用which rm 可以查看命令别名),
使用rm删除文件前会提示,就是因为rm -i这个参数。如果想使用命令原意,可以在加\转义,
如:\rm test.txt   则不会提示,直接删除

Recherchez les fichiers dans le répertoire /var/log/ dont les noms se terminent par .log. Après les avoir trouvés, exécutez ls -l pour afficher des informations détaillées.

[root@localhost ~]# find /var/log/ *.log -exec ls -l {} \;
total 1176
drwxr-xr-x. 2 root   root      204 Sep 18 09:12 anaconda
drwx------. 2 root   root       23 Sep 18 09:12 audit
-rw-------. 1 root   root    53001 Sep 19 00:57 boot.log
-rw-------. 1 root   utmp      384 Sep 18 09:22 btmp
drwxr-xr-x. 2 chrony chrony      6 Apr 12 13:37 chrony
-rw-------. 1 root   root     3523 Sep 19 01:01 cron
-rw-r--r--  1 root   root   119414 Sep 19 00:57 dmesg
-rw-r--r--  1 root   root   119599 Sep 18 23:35 dmesg.old
-rw-r--r--. 1 root   root     1320 Sep 19 00:23 firewalld
-rw-r--r--. 1 root   root      193 Sep 18 09:05 grubby_prune_debug
....

Recherchez les fichiers dont les noms commencent par "init*" dans le répertoire /etc/. Une fois trouvés, répertoriez uniquement les fichiers, filtrez les répertoires et exécutez ls -l pour afficher des informations détaillées.

[root@localhost ~]# find /etc/ -name "init*" -a -type f -exec ls -l {} \;

-rw-r--r--. 1 root root 511 Apr 11 01:09 /etc/inittab
-rw-r--r--. 1 root root 798 Apr 11 01:09 /etc/sysconfig/init
-rwxr-xr-x. 1 root root 5419 Jan  2  2018 /etc/sysconfig/network-scripts/init.ipv6-global
-rw-r--r--. 1 root root 30 Apr 11 14:12 /etc/selinux/targeted/contexts/initrc_context

Recherchez le fichier yum.log sous /tmp/ et supprimez-le directement après l'avoir trouvé.

[root@localhost tmp]# find /tmp/ -name yum.log -exec rm {} \;
[root@localhost tmp]#

Recherchez sous la racine et recherchez tous les fichiers liés à l'utilisateur lyshark, et supprimez-les directement après les avoir trouvés.

[root@localhost ~]# find / -user lyshark -exec rm -r {} \;

find: ‘/proc/1465/task/1465/fd/6’: No such file or directory
find: ‘/proc/1465/task/1465/fdinfo/6’: No such file or directory
find: ‘/proc/1465/fd/5’: No such file or directory
find: ‘/proc/1465/fdinfo/5’: No such file or directory
find: ‘/root/Catalog’: No such file or directory
find: ‘/home/lyshark’: No such file or directory
#rm -r 连带目录一起删除.报错原因:-exec 不适合大量传输,速率慢导致.

Sous la racine, recherchez les fichiers de l'utilisateur lyshark, supprimez-les après les avoir trouvés et il vous sera demandé si vous souhaitez les supprimer avant de les supprimer.

[root@localhost ~]# find / -user lyshark -ok rm -r {} \;
find: ‘/proc/1777/task/1777/fd/6’: No such file or directory
find: ‘/proc/1777/task/1777/fdinfo/6’: No such file or directory

 ? y
# -ok的使用和-exec是一样的,区别是-ok,执行时会提示你是否进行下一步操作.

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