首页 / Linux 命令行入门教程 / 34. locate 与 xargs

Linux 命令行入门教程

34. locate 与 xargs

本教程共 90 篇 · 第 34 篇

34. locate 与 xargs

find 慢在实时扫描整棵目录树。这章的 locate 另走一条路:它查一个预先建好的文件名数据库,所以飞快,但看不到刚建的文件。

数据库靠 updatedb 更新,系统通常会定时跑。想立刻生效,手动更新:

sudo updatedb

基本用法,按名字搜(匹配的是完整路径里包含的字样):

locate notes.txt
locate "*.conf"

常用选项:-i 忽略大小写,-c 只数数量,-l N 限制条数,-S 看数据库统计:

locate -ci "readme"
locate -l 5 "*.png"
Note

locate 找不到刚建的文件,因为数据库还没更新。建完文件先 sudo updatedb,再 locate 就能搜到。

xargs 把前一条命令的输出,转成后一条命令的参数。比如把 find 找到的一堆文件交给 rm:

find . -name "*.tmp" | xargs rm

文件名里带空格时,上面的写法会出错。用 -0 配合 find 的 -print0 才稳:

find . -name "*.tmp" -print0 | xargs -0 rm

-I 指定占位符,可逐个处理:

find . -name "*.log" | xargs -I {} mv {} /backup/
Warning

find ... | xargs rm 同样会真删文件,且不可恢复。执行前先用 find ... -print 看清楚会命中哪些,确认无误再接 | xargs rm;含空格文件名务必用 -print0 | xargs -0

小结:locate 查库秒出、需 updatedb 刷新;xargs 把输出拼成参数,配合 find 做批量删除或移动。