find命令的替代fd
前言
由于习惯不好, 写过的python代码随便放位置.
如今想找到曾经写过的一个文件,
只记得文件名中的一部分.
搜索范围又有点大,
觉得find可能会吃力,
因此去寻找一个find的替代.
最终找到了 fd
介绍
fd基于rust,一种比肩C++速度的语言,由Mozilla在2010年发布.
提供了色彩输出,智能大小写等功能.
使用
简单搜索
find默认要求精准的文件名描述,
而fd只需要给出文件名的一部分.
1 | find . -iname '*nes*' |
-
隐藏文件
但这造成了fd并不知道使用者到底使用的是
*nes
还是*nes*
还是nes*
.
如果用find会强制要求用户说明.
因此fd可能会寻找比find更多的结果.
因此fd忽略了以点开头的隐藏文件.
需要使用-H
选项指定 -
忽略文件
类似rg,fd的系统默认指定了一系列不查看的文件,
比如遵循.gitignore
-
目录指定
同样指定目录这个功能,从find的必须项变成了fd的可选项
1
2find prog -name '*nes*'
fd nes prog -
智能大小写
像swiper一样,纯小写的内容,效果就像
-iname
大小写混合的内容,效果就像-name
指定类型
1 | find . -type f -name '*nes*.py' |
指定文件类型
1 | fd .md |
指定深度
-d
--max-depth
显示完整路径
-a
--absolute-path
绝妙的占位符
-x
--exec
1 | fd -e jpg -x chmod 644 {} |
占位符的用法
{}
文件路径,比如wp-content/uploads/01.jpg
{.}
文件路径,但没有扩展名,比如wp-content/uploads/01
{/}
不带路径的文件名,比如01.jpg
{/.}
不带路径的文件名,没有扩展名,比如01
{//}
文件的文件夹路径,比如wp-content/uploads