1. find 命令(最通用最强大)
find 是我在 Linux 下找文件用得最多最顺手的一个,能递归、能按条件过滤、能上正则、还能顺手执行操作。别嫌它参数多,实际常用的就那么几个。
- 查找名为 file.txt 的文件:
find /path/to/search -name "file.txt"
例:在全盘查找
find / -name "file.txt"
- 查找名为 myfolder 的文件夹:
find /path/to/search -type d -name "myfolder"
- 查找所有以 .conf 结尾的文件:
find /etc -type f -name "*.conf"
- 查找并显示详细路径:
find $HOME -name "*.pdf"
2. locate 命令(速度最快,适合频繁查找)
locate 利用数据库,查找极快。首次需要更新数据库:
- 安装:
sudo pacman -S mlocate
sudo updatedb
- 使用:
locate file.txt
locate myfolder
locate '*.pdf'
注意:
locate查到的是之前数据库里记录的,新文件请先sudo updatedb刷新数据库。
3. fd 命令(更友好、现代化、输出美观)
fd 是现代化的 find 替代品,支持彩色输出、忽略 .gitignore、语法简单。
- 安装:
sudo pacman -S fd
(用命令叫 `fd`,有时是 `fdfind`)
- 用法示例:
fd file.txt # 在当前目录递归查找文件
fd myfolder -t d # 只查找名为myfolder的目录
fd '\.pdf$' # 查找所有 pdf 文件
4. find + grep 联合查找(查内容或复杂匹配)
- 查找包含特定内容的文件:
find . -type f -name "*.c" | xargs grep "main"
5. ranger 文件管理器(交互式,支持模糊查找)
- 安装:
sudo pacman -S ranger
- 运行后按
/输入关键字查找
总结推荐
- 最通用、最稳妥:
find - 最快速:
locate - 最美观现代:
fd - 最简单GUI:
ranger
你可以直接复制以下命令尝试(以查找test.py为例):
find ~ -name "test.py"
locate test.py
fd test.py ~
模糊查找
1. 用 find 结合通配符(支持*、?等)
- 查找包含关键字的文件(比如查找名字里有 “test” 的所有文件):
find /path/to/search -type f -name "*test*"
例如在家目录下递归查找名字含有“data”的文件:
find ~ -type f -name "*data*"
2. 用 fd 命令(推荐,支持模糊/正则)
- 查找名字中含有”data”的文件:
fd data
这会在当前目录递归查找所有文件名里含有“data”的条目(文件和目录)。
- 只查找文件夹:
fd data -t d
- 正则查找所有以“data”结尾的文件:
fd 'data$'
3. 用 locate 配合正则或通配符(模糊但是基于索引)
- 查找包含”test”的所有文件和文件夹:
locate test
或使用通配符(注意引号):
locate '*test*'
4. 交互式模糊查找:fzf(终极推荐!)
fzf 是一款模糊查找神器,尤其适合大量文件时,实时模糊筛选,体验极佳。
- 安装:
sudo pacman -S fzf
- 基本用法:
find . -type f | fzf
上面这条命令会把当前目录下所有文件管道到 `fzf`,你可以直接输入关键字模糊筛选,回车选中即可。
- 直接查找所有文件并模糊匹配(全盘):
locate "" | fzf
5. ranger 文件管理器内置模糊查找
- 打开 ranger,直接按
/,输入模糊关键字,实时跳转查找。
总结一句话
- 想命令行模糊查找:用
fd 关键字或find ~ -name "*关键字*" - 想交互模糊查找:用
fzf(推荐,极快极爽!)
补充小技巧:
- 大部分现代 shell(如 zsh)也有内置模糊补全,查文件很方便。
- 组合
fd | fzf,就是终极文件模糊查找!
大概就这些了,我平时找文件基本都是 find 兜底、fd 图快、fzf 图爽这几招换来换去。你要是也有自己的查找心得,欢迎分享。
