find命令的替代fd

前言

由于习惯不好, 写过的python代码随便放位置.
如今想找到曾经写过的一个文件,
只记得文件名中的一部分.
搜索范围又有点大,
觉得find可能会吃力,
因此去寻找一个find的替代.
最终找到了 fd

介绍

fd基于rust,一种比肩C++速度的语言,由Mozilla在2010年发布.
提供了色彩输出,智能大小写等功能.

使用

简单搜索

find默认要求精准的文件名描述,
而fd只需要给出文件名的一部分.

1
2
find . -iname '*nes*'
fd nes
  1. 隐藏文件

    但这造成了fd并不知道使用者到底使用的是 *nes 还是 *nes* 还是 nes*.
    如果用find会强制要求用户说明.
    因此fd可能会寻找比find更多的结果.
    因此fd忽略了以点开头的隐藏文件.
    需要使用 -H 选项指定

  2. 忽略文件

    类似rg,fd的系统默认指定了一系列不查看的文件,
    比如遵循 .gitignore

  3. 目录指定

    同样指定目录这个功能,从find的必须项变成了fd的可选项

    1
    2
    find prog -name '*nes*'
    fd nes prog
  4. 智能大小写

    像swiper一样,纯小写的内容,效果就像 -iname
    大小写混合的内容,效果就像 -name

指定类型

1
2
find . -type f -name '*nes*.py'
fd -tf '*nes*.py'

指定文件类型

1
2
fd .md
fd nes -e 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

参考

  1. 该站点的UI和内容比较好
  2. 解说比较全