#8.Linux中文件查找相关命令

本文详细介绍了Linux中用于文件查找的三个重要命令:locate、find和xargs。locate命令基于预构建的索引快速查找文件,find命令则提供更复杂的查找选项,如按名称、大小、时间等条件,并能执行额外的操作,如删除文件。xargs命令常与find结合使用,避免因参数过多导致的处理问题,将查找结果分批传递给其他命令。这些工具对于日常系统管理和维护至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux中文件查找相关命令


1. locate——简单快速的文件查找命令

locate是一个简单快速的文件查找命令,查找速度快,而且无需指定查找起始路径。

locate 文件名
[root@localhost ~]# locate sshd_config
/etc/ssh/sshd_config
/usr/share/man/man5/sshd_config.5.gz

PS: locate命令的查找依赖于实现构建好的索引数据库,而索引数据库主要是由系统根据周期性任务计划来自动更新,因而locate只能查找到索引数据库更新之前的文件,查找结果也未必精确

2. find——强大的文件查找命令(多级查找)

find是功能最强大的文件查找命令,它可以实现文件的精确查找,语法格式为:

find [查找起始路径] [选项] [查找条件] [处理动作]
  • 查找起始路径:可以根据需要指定,默认为当前路径。如果指定为"/",就表示在整个硬盘中查找
  • 查找条件:指定的查找标准,可以根据文件名、文件大小、文件类型、从属关系、权限等进行设置,默认为找出指定路径下的所有文件
  • 处理动作:对符合查找条件的文件做出的操作,例如删除等操作,默认为输出至标准输出
操作功能
find [查找起始路径] -name [查找条件]按照名称进行查找,允许使用通配符
find [查找起始路径] -iname [查找条件]按照名称查找,不区分大小写
find [查找起始路径] -empty [查找条件]查找空文件或目录
find [查找起始路径] -type [查找条件]按文件类型查找,文件类型指的是普通文件(f)、目录(d)、符号链接文件(l)、块设备文件(b),字符设备文件(c)
find [查找起始路径] -size [查找条件]按照文件大小来查找。一般使用"+"、"-"来设置超过或低于指定大小作为查找条件(k、M、G)
find [查找起始路径] -not [查找条件]取反
find [查找起始路径] -atime [查找条件]按照访问时间查找(以天为单位)。如果以分钟为单位,选项变为amin
find [查找起始路径] -mtime [查找条件]按照更改时间查找(以天为单位)。如果以分钟为单位,选项变为mmin
find [查找起始路径] -ctime [查找条件]按照改动时间查找(以天为单位)。如果以分钟为单位,选项变为cmin
find [查找起始路径] -exec [查找条件]对查找到的结果进行进一步的处理,在命令中可以使用"{}“表示find命令查找到的结果,而且最后必须添加”“表示命令结束,”"前面有个空格 find /tmp -name “*.txt” -exec rm -f {} ; 记住加上分号
[root@localhost ~]# find /etc -name "passwd"
/etc/pam.d/passwd
/etc/passwd
[root@localhost ~]# find /etc -name "pass"
[root@localhost ~]# find /etc -name "*pass*"
/etc/fonts/conf.d/60-overpass.conf
/etc/security/opasswd
/etc/pam.d/passwd
/etc/pam.d/gdm-password
/etc/pam.d/password-auth-ac
/etc/pam.d/password-auth
/etc/passwd
/etc/openldap/certs/password
/etc/selinux/targeted/active/modules/100/passenger
/etc/passwd-
[root@localhost ~]# find /boot -not -type f -ls
    64    4 dr-xr-xr-x   5 root     root         4096 228 19:06 /boot
    67    0 drwx------   3 root     root           17 729  2020 /boot/efi
524352    0 drwxr-xr-x   4 root     root           32 228 19:02 /boot/efi/EFI
1069120    0 drwx------   3 root     root          190 228 19:02 /boot/efi/EFI/centos
1069128    0 drwx------   2 root     root            6 729  2020 /boot/efi/EFI/centos/fw
524353    0 drwxr-xr-x   2 root     root           62 228 19:02 /boot/efi/EFI/BOOT
1572928    0 drwx------   5 root     root           97 228 19:06 /boot/grub2
1572930   12 drwxr-xr-x   2 root     root         8192 228 19:06 /boot/grub2/i386-pc
    78    4 drwxr-xr-x   2 root     root         4096 228 19:06 /boot/grub2/locale
524357    0 drwxr-xr-x   2 root     root           25 228 19:06 /boot/grub2/fonts
    68    0 drwxr-xr-x   2 root     root           27 228 19:02 /boot/grub
[root@localhost ~]# find /tmp -atime +7    #访问时间在7天之前
/tmp/.ICE-unix/1452
/tmp/.ICE-unix/1972
/tmp/.ICE-unix/1583
/tmp/.ICE-unix/1873
/tmp/.ICE-unix/1584
/tmp/.ICE-unix/1910
/tmp/ssh-JkzGFaOr1bj2/agent.1878
/tmp/ssh-IrIrF4CNplbS/agent.1972
/tmp/hi.txt
/tmp/fstab
/tmp/ssh-KyNFmsVfPFaj/agent.1886
/tmp/ssh-eDcwzMdVYb4I/agent.1910
/tmp/ssh-LuXSNRxmgaEy/agent.1878
/tmp/ssh-fUbPjvVRDC2t/agent.1873
/tmp/yum_save_tx.2022-03-07.10-27.6sLQbv.yumtx
/tmp/yum_save_tx.2022-03-08.09-24.nXhozc.yumtx
[root@localhost ~]# find /etc -name "*ssh*" -type f -exec cp {} /tmp/ssh \

2.1 关于find中exec选项的说明

exec选项最主要的作用就是将find命令找到的结果当成文件去处理,而默认情况下,find命令找到的结果是被当作文本信息去处理的。

[root@localhost ~]# touch /tmp/{a,b,c}.txt
[root@localhost ~]# find /tmp -name "*.txt"
/tmp/b.txt
/tmp/hi.txt
/tmp/c.txt
/tmp/a.txt
[root@localhost ~]# find /tmp -name "*.txt" | wc -l
4

根据以上代码可知,find只是把查找的结果当作文本信息即文字去处理的;如果要把find找到的结果当作文件本身去处理,只能用exec选项。

[root@localhost ~]# find /tmp -name "*.txt" -exec rm -f {} \;
[root@localhost ~]# ls /tmp
fstab
ssh
ssh-6EILeL6rUloL
ssh-6IDz37axcGFG
ssh-eDcwzMdVYb4I
ssh-fUbPjvVRDC2t
ssh-g0uV0IOFTDkR
ssh-hXM50rqCnkdq
ssh-IrIrF4CNplbS
ssh-JkzGFaOr1bj2
ssh-KyNFmsVfPFaj
ssh-LuXSNRxmgaEy
ssh-R5e93KCqUHOw
ssh-rbOhvcvAr7ER
ssh-WJAQnpEtsmHZ
systemd-private-08b0606041ec4c4ea51b3a3a529f4abf-bolt.service-QOGGMo
systemd-private-08b0606041ec4c4ea51b3a3a529f4abf-chronyd.service-agT18r
systemd-private-08b0606041ec4c4ea51b3a3a529f4abf-colord.service-w16t8S
systemd-private-08b0606041ec4c4ea51b3a3a529f4abf-cups.service-KQVED1
systemd-private-08b0606041ec4c4ea51b3a3a529f4abf-fwupd.service-ky2eI2
systemd-private-08b0606041ec4c4ea51b3a3a529f4abf-rtkit-daemon.service-qq9tDD
systemd-private-13ec4c5a720a4c85a009ba4171f1824c-bolt.service-kvVAQM
systemd-private-13ec4c5a720a4c85a009ba4171f1824c-chronyd.service-IL3KFY
systemd-private-13ec4c5a720a4c85a009ba4171f1824c-colord.service-MROasI
systemd-private-13ec4c5a720a4c85a009ba4171f1824c-cups.service-O98c0A
systemd-private-13ec4c5a720a4c85a009ba4171f1824c-fwupd.service-Iui8DJ
systemd-private-13ec4c5a720a4c85a009ba4171f1824c-rtkit-daemon.service-iBay96
systemd-private-2cdc8aac4e144739b9811e1d148cf55a-bolt.service-YkFKlw
systemd-private-2cdc8aac4e144739b9811e1d148cf55a-chronyd.service-8KP2Wu
systemd-private-2cdc8aac4e144739b9811e1d148cf55a-colord.service-yIHxs1
systemd-private-2cdc8aac4e144739b9811e1d148cf55a-cups.service-qIKav1
systemd-private-2cdc8aac4e144739b9811e1d148cf55a-fwupd.service-wzJREQ
systemd-private-2cdc8aac4e144739b9811e1d148cf55a-rtkit-daemon.service-6AAV1o
systemd-private-645bd1a54f7345d7967c485a9232dd1d-bolt.service-WlzoXD
systemd-private-645bd1a54f7345d7967c485a9232dd1d-chronyd.service-W4RlYy
systemd-private-645bd1a54f7345d7967c485a9232dd1d-colord.service-uikaEl
systemd-private-645bd1a54f7345d7967c485a9232dd1d-cups.service-421Cbg
systemd-private-645bd1a54f7345d7967c485a9232dd1d-fwupd.service-AkHFUl
systemd-private-645bd1a54f7345d7967c485a9232dd1d-rtkit-daemon.service-mt8NuN
systemd-private-698a687b6c1744798d3d68891e532282-bolt.service-T5OxsL
systemd-private-698a687b6c1744798d3d68891e532282-chronyd.service-Hjbv1C
systemd-private-698a687b6c1744798d3d68891e532282-colord.service-BnX8Kk
systemd-private-698a687b6c1744798d3d68891e532282-cups.service-D7c8wW
systemd-private-698a687b6c1744798d3d68891e532282-fwupd.service-BcdN47
systemd-private-698a687b6c1744798d3d68891e532282-rtkit-daemon.service-tacYZx
systemd-private-79f282d3a4fa475fbbaf3c384286c6d6-bolt.service-7Rkldr
systemd-private-79f282d3a4fa475fbbaf3c384286c6d6-chronyd.service-LCRu3p
systemd-private-79f282d3a4fa475fbbaf3c384286c6d6-colord.service-zvAm4M
systemd-private-79f282d3a4fa475fbbaf3c384286c6d6-cups.service-XZVpMs
systemd-private-79f282d3a4fa475fbbaf3c384286c6d6-fwupd.service-vJWyqQ
systemd-private-79f282d3a4fa475fbbaf3c384286c6d6-rtkit-daemon.service-5kpmBm
systemd-private-855e0056410c43e680eb60fd93a7a3a4-bolt.service-aepUIL
systemd-private-855e0056410c43e680eb60fd93a7a3a4-chronyd.service-ketQpa
systemd-private-855e0056410c43e680eb60fd93a7a3a4-colord.service-eLnah1
systemd-private-855e0056410c43e680eb60fd93a7a3a4-cups.service-oPp075
systemd-private-855e0056410c43e680eb60fd93a7a3a4-fprintd.service-kqBHQj
systemd-private-855e0056410c43e680eb60fd93a7a3a4-fwupd.service-q5TIMj
systemd-private-855e0056410c43e680eb60fd93a7a3a4-rtkit-daemon.service-05jOs4
systemd-private-855e0056410c43e680eb60fd93a7a3a4-systemd-hostnamed.service-wIkVBO
systemd-private-855e0056410c43e680eb60fd93a7a3a4-systemd-localed.service-QUag8w
systemd-private-8cae014b17624b9fb41d8b1e3f4abd46-bolt.service-0542AA
systemd-private-8cae014b17624b9fb41d8b1e3f4abd46-chronyd.service-iOkmZW
systemd-private-8cae014b17624b9fb41d8b1e3f4abd46-colord.service-hla0Vh
systemd-private-8cae014b17624b9fb41d8b1e3f4abd46-cups.service-CADmxo
systemd-private-8cae014b17624b9fb41d8b1e3f4abd46-fwupd.service-WjE5KH
systemd-private-8cae014b17624b9fb41d8b1e3f4abd46-rtkit-daemon.service-KD1GxO
systemd-private-9b916b042cd1412a9ad90772ba885780-bolt.service-FdAOsg
systemd-private-9b916b042cd1412a9ad90772ba885780-chronyd.service-BHD8su
systemd-private-9b916b042cd1412a9ad90772ba885780-colord.service-FbgE8K
systemd-private-9b916b042cd1412a9ad90772ba885780-cups.service-z040fJ
systemd-private-9b916b042cd1412a9ad90772ba885780-fwupd.service-hNDQYN
systemd-private-9b916b042cd1412a9ad90772ba885780-rtkit-daemon.service-xImDfu
systemd-private-bc5d620438334f7bb6657e14fd73d4fe-bolt.service-AzXjbt
systemd-private-bc5d620438334f7bb6657e14fd73d4fe-chronyd.service-OMcX9A
systemd-private-bc5d620438334f7bb6657e14fd73d4fe-colord.service-qDwgcY
systemd-private-bc5d620438334f7bb6657e14fd73d4fe-cups.service-wuLAhW
systemd-private-bc5d620438334f7bb6657e14fd73d4fe-fwupd.service-wx5uhe
systemd-private-bc5d620438334f7bb6657e14fd73d4fe-rtkit-daemon.service-aiK6PD
systemd-private-d7827a8e28764b498bdac89056852937-bolt.service-hNg5Nc
systemd-private-d7827a8e28764b498bdac89056852937-chronyd.service-tTEHlD
systemd-private-d7827a8e28764b498bdac89056852937-colord.service-vvyQpP
systemd-private-d7827a8e28764b498bdac89056852937-cups.service-xvkxV2
systemd-private-d7827a8e28764b498bdac89056852937-fwupd.service-V8w9jJ
systemd-private-d7827a8e28764b498bdac89056852937-rtkit-daemon.service-dD1HRw
systemd-private-e18cb38ef37e449299c1e036bc30e783-bolt.service-OIE3fH
systemd-private-e18cb38ef37e449299c1e036bc30e783-chronyd.service-GM6m3L
systemd-private-e18cb38ef37e449299c1e036bc30e783-colord.service-udoUjP
systemd-private-e18cb38ef37e449299c1e036bc30e783-cups.service-WE1EEA
systemd-private-e18cb38ef37e449299c1e036bc30e783-fwupd.service-yJGGXv
systemd-private-e18cb38ef37e449299c1e036bc30e783-rtkit-daemon.service-EaDeuA
systemd-private-fb799913997e4bf0a847470a11a75b4e-bolt.service-7H6DHf
systemd-private-fb799913997e4bf0a847470a11a75b4e-chronyd.service-n3Xhhx
systemd-private-fb799913997e4bf0a847470a11a75b4e-colord.service-psZ7pT
systemd-private-fb799913997e4bf0a847470a11a75b4e-cups.service-psrG62
systemd-private-fb799913997e4bf0a847470a11a75b4e-fwupd.service-Zq3E4y
systemd-private-fb799913997e4bf0a847470a11a75b4e-rtkit-daemon.service-tj51Tr
tracker-extract-files.0
VMwareDnD
vmware-root_692-2696942994
vmware-root_698-2730496923
vmware-root_699-3979839557
vmware-root_702-2722304542
vmware-root_712-2957059153
vmware-root_720-2957714511
vmware-root_726-2957583432
vmware-root_731-4248811549
vmware-root_744-2957583465
vmware-root_747-4282367541
vmware-root_754-2965513717
yum_save_tx.2022-03-10.09-43.qyrFpH.yumtx
yum_save_tx.2022-03-10.14-51.g57qdA.yumtx
yum_save_tx.2022-03-10.14-51.i81R5X.yumtx
yum_save_tx.2022-03-10.14-51.sdFgwI.yumtx
yum_save_tx.2022-03-10.14-51.SIlu9v.yumtx
yum_save_tx.2022-03-10.14-51.Zqhlg2.yumtx
yum_save_tx.2022-03-13.16-11.iSDV9x.yumtx
yum_save_tx.2022-03-15.20-41.DU36vA.yumtx
yum_save_tx.2022-03-16.09-25.Qaz6uP.yumtx
yum_save_tx.2022-03-18.10-40.n_3dXq.yumtx

如果不使用exec选项,那么还可以使用管道符号"|"加上xargs选项实现与exec同样的效果,即可实现将find找到的结果当作文件处理。

3. xargs——find辅助命令

当在find命令中利用-exec选项对查找到的结果进行进一步处理时,有时可能会出现问题。这是因为-exec选项是将find查找到的所有结果一次性的给后面的命令进行处理,有时候find可能会找到大量文件,超出了后面命令所能处理的参数范围,这个时候可能会出现溢出错误,错误信息通常是"参数列太长"或"参数列溢出"。这时就可以使用xargs命令,它虽然是一个独立的Linux系统命令,但通常被用来配合find命令使用。通过xargs,可以将find所找到的结果分批次的送给之后的命令进行处理,从而避免之前所说的问题。

xargs命令需要通过管道与find命令配合使用,格式为:

|xargs commands
[root@localhost ~]# find /tmp/ -name "*.txt" | xargs grep "password"
/tmp/a.txt:password=123
[root@localhost ~]# find /tmp/ -name "*.txt" -exec grep "password" {} \;
password=123

xargs命令也可以与大括号使用,但需要加上-i选项,否则不支持

[root@localhost ~]# find /tmp/ -name "*.txt" | xargs -i cp {} /root
[root@localhost ~]# ls
aaa.txt          b.txt                 inittab.bak  test1     模板  文档  桌面
anaconda-ks.cfg  c.txt                 rc.d         test.txt  视频  下载
a.txt            initial-setup-ks.cfg  test         公共      图片  音乐
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值