# FD - 查找条目的程序<no value>

### fd 是一个在你文件系统中查找条目的程序。它是一个简单、快速、友好的 find 替代品。虽然它的目标不是支持 find 的所有强大功能，但它为大多数的使用情况提供了合理的（有意见的）默认值。

项目地址: https://github.com/cha0ran/fd-zh


安装FD
```
apt update && apt install fd-find
```

语法:
```
fa 
```

##### 例1:在磁盘中搜索文件名包含 .md
```
fd .md /
```
##### 例2:用正则表达式 - 在磁盘中搜索后缀名为 .md

```
fd '.*\.md$' /
```

##### 例3:在 /site/content/ 目录搜索文件名包含 zh-tw.md 
```
fd zh-tw.md /site/content/
```

##### 例4:用正则表达式 - 在 /site/content/ 目录搜索末尾名为 zh-tw 后缀名 .md 
```
fd '.*zh-tw\.md$' /site/content/
```

##### 例5:对FD搜索结果执行外部命令, 用正则表达式 - 在 /site/content/ 目录搜索末尾名为 zh-tw 后缀名 .md ,并将搜索出的结果内容移除,使用命令 rm -R 
```
fd '.*zh-tw\.md$' /site/content/ -X rm -R
```

中文帮助
```


A program to find entries in your filesystem

使用: fd [OPTIONS] [pattern] [path]...

Arguments:
  [pattern]
          搜索模式，可以是正则表达式（默认）或通配符模式（if --glob is used）。如果没有指定模式，则认为每个条目都是匹配项。如果您的模式以破折号（-）开头，请确保先传递 '--'，否则它将被视为标志（fd -- '-foo'）。

  [path]...
          文件系统搜索的根目录（可选）。如果省略，则搜索当前工作目录。

Options:
  -H, --hidden
          包括隐藏的目录和文件在搜索结果中（默认：跳过隐藏的文件和目录）。如果文件或目录的名称以 `.` 符号（点）开头，则视为隐藏。可以使用 --no-hidden 覆盖该标志。

  -I, --no-ignore
          显示文件和目录的搜索结果，否则这些结果将被 '.gitignore'、'.ignore'、'.fdignore' 或全局忽略文件忽略。可以使用 --ignore 覆盖该标志。

      --no-ignore-vcs
          显示文件和目录的搜索结果，否则这些结果将被 '.gitignore' 文件忽略。可以使用 --ignore-vcs 覆盖该标志。

      --no-ignore-parent
          显示文件和目录的搜索结果，否则这些结果将被父目录中的 '.gitignore'、'.ignore' 或 '.fdignore' 文件忽略。

  -u, --unrestricted...
          执行无限制的搜索，包括被忽略和隐藏的文件。这是 '--no-ignore --hidden' 的别名。

  -s, --case-sensitive
          执行区分大小写的搜索。默认情况下，fd 使用不区分大小写的搜索，除非模式中包含大写字母字符（智能大小写）。

  -i, --ignore-case
          执行不区分大小写的搜索。默认情况下，fd 使用不区分大小写的搜索，除非模式中包含大写字母字符（智能大小写）。

  -g, --glob
          执行基于通配符的搜索，而不是正则表达式搜索。

      --regex
          执行基于正则表达式的搜索（默认）。可以用来覆盖 --glob。

  -F, --fixed-strings
          将模式视为字面字符串，而不是正则表达式。注意，这也执行子字符串比较。如果您想要精确匹配文件名，请考虑使用 '--glob'。

      --and <pattern>
          添加额外的必需搜索模式，所有这些模式都必须匹配。可以指定多个额外的模式。这些模式是正则表达式，除非使用了 '--glob' 或 '--fixed-strings'。

  -a, --absolute-path
          显示从根目录开始的完整路径，而不是相对路径。可以使用 --relative-path 覆盖该标志。

  -l, --list-details
          使用类似 'ls -l' 的详细列表格式。基本上，这是 '--exec-batch ls -l' 的别名，附加了一些额外的 'ls' 选项。可以用于查看更多元数据，显示符号链接的目标以及实现确定性排序。

  -L, --follow
          默认情况下，fd 不会进入符号链接的目录。使用此标志，也会遍历符号链接。可以使用 --no-follow 覆盖该标志。

  -p, --full-path
          默认情况下，搜索模式仅与文件名（或目录名）匹配。使用此标志，模式将与完整（绝对）路径匹配。示例：
            fd --glob -p '**/.git/config'

  -0, --print0
          使用空字符（而不是换行符）分隔搜索结果。用于将结果传输到 'xargs'。

  -d, --max-depth <depth>
          限制目录遍历到给定的深度。默认情况下，搜索深度没有限制。

      --min-depth <depth>
          仅显示从给定深度开始的搜索结果。另请参阅：'--max-depth' 和 '--exact-depth'

      --exact-depth <depth>
          仅在精确给定的深度处显示搜索结果。这是 '--min-depth <depth> --max-depth <depth>' 的别名。

  -E, --exclude <pattern>
          排除与给定的通配符模式匹配的文件/目录。这将覆盖任何其他的忽略逻辑。可以指定多个排除模式。
          
          示例： 
            --exclude '*.pyc' 
            --exclude node_modules

      --prune
          不要遍历与搜索条件匹配的目录。如果要排除特定目录，请使用 '--exclude=...' 选项。

  -t, --type <filetype>
          根据类型筛选搜索结果：
            'f' 或 'file'：         普通文件
            'd' 或 'directory'：    目录
            'l' 或 'symlink'：      符号链接
            's' 或 'socket'：       套接字
            'p' 或 'pipe'：         命名管道（FIFO）

            'x' 或 'executable'：   可执行文件
            'e' 或 'empty'：        空文件或目录

          此选项可以多次指定以包括多种文件类型。搜索 '--type file --type symlink' 将显示普通文件和符号链接。请注意，'executable' 和 'empty' 过滤器的工作方式不同：'--type executable' 默认隐含 '--type file'。'--type empty' 搜索空文件和目录，除非还额外指定了 '--type file' 或 '--type directory'。

          示例：
            - 仅搜索文件：
                fd --type file … 
                fd -tf … 
            - 查找文件和符号链接：
                fd --type file --type symlink … 
                fd -tf -tl

 … 
            - 查找可执行文件：
                fd --type executable 
                fd -tx 
            - 查找空文件：
                fd --type empty --type file 
                fd -te -tf 
            - 查找空目录：
                fd --type empty --type directory 
                fd -te -td

  -e, --extension <ext>
          （另外）通过文件扩展名筛选搜索结果。可以指定多个允许的文件扩展名。
          
          如果想要搜索没有扩展名的文件，可以使用正则表达式 '^[^.]+$' 作为普通搜索模式。

  -S, --size <size>
          根据文件大小限制结果，使用格式 <+-><NUM><UNIT>。
             '+': 文件大小必须大于或等于此值
             '-': 文件大小必须小于或等于此值
          
          如果未指定 '+' 或 '-'，文件大小必须正好等于此值。
             'NUM':  数字大小（例如 500）
             'UNIT': NUM 的单位。不区分大小写。
          允许的单位值：
              'b':  字节
              'k':  千字节（十进制，10^3 = 1000 字节）
              'm':  兆字节
              'g':  吉字节
              't':  太字节
              'ki': 吉比字节（二进制，2^10 = 1024 字节）
              'mi': 兆比字节
              'gi': 吉比字节
              'ti': 太比字节

      --changed-within <date|dur>
          基于文件修改时间过滤结果。返回修改时间大于参数的文件。参数可以作为特定时间点（YYYY-MM-DD HH:MM:SS）或持续时间（10h，1d，35min）提供。如果未指定时间，则默认为 00:00:00。还可以使用 '--change-newer-than'、'--newer' 或 '--changed-after' 作为别名。
          
          示例： 
              --changed-within 2weeks 
              --change-newer-than '2018-10-27 10:00:00' 
              --newer 2018-10-27 
              --changed-after 1day

      --changed-before <date|dur>
          基于文件修改时间过滤结果。返回修改时间小于参数的文件。参数可以作为特定时间点（YYYY-MM-DD HH:MM:SS）或持续时间（10h，1d，35min）提供。也可以使用 '--change-older-than' 或 '--older' 作为别名。
          
          示例： 
              --changed-before '2018-10-27 10:00:00' 
              --change-older-than 2weeks 
              --older 2018-10-27

  -o, --owner <user:group>
          根据用户和/或组筛选文件。格式：[(user|uid)][:(group|gid)]。两侧均可省略。在任一侧前面加上 '!' 可以排除文件。
          
          示例： 
              --owner john 
              --owner :students 
              --owner '!john:students'

  -x, --exec <cmd>...
          对每个搜索结果并行执行一个命令（使用 --threads=1 进行顺序命令执行）。--exec 后的所有位置参数都被视为命令的参数 - 而不是 fd 的参数。因此，建议将 '-x'/'--exec' 选项放在最后。
          在执行命令之前将使用以下占位符进行替换：
            '{}':   路径（当前搜索结果的路径）
            '{/}':  基本名称
            '{//}': 父目录
            '{.}':  没有文件扩展名的路径
            '{/.}': 没有文件扩展名的基本名称
          
          如果没有出现占位符，假定在末尾隐含一个隐含的 "{}"。

          示例：
            - 查找所有 *.zip 文件并解压缩它们：
                fd -e zip -x unzip
            - 查找 *.h 和 *.cpp 文件并为每个运行 "clang-format -i .."：
                fd -e h -e cpp -x clang-format -i
            - 将所有 *.jpg 文件转换为 *.png 文件：
                fd -e jpg -x convert {} {.}.png

  -X, --exec-batch <cmd>...
          一次执行给定的命令，所有搜索结果作为参数。在执行命令之前将使用以下占位符之一进行替换：
            '{}':   路径（所有搜索结果的路径）
            '{/}':  基本名称
            '{//}': 父目录
            '{.}':  没有文件扩展名的路径
            '{/.}': 没有文件扩展名的基本名称
          
          如果没有出现占位符，假定在末尾隐含一个隐含的 "{}"。

          示例：
            - 查找所有 test_*.py 文件并在您喜欢的编辑器中打开它们：
                fd -g 'test_*.py' -X vim
            - 查找所有 *.rs 文件并使用 "wc -l ..." 计算行数：
                fd -e rs -X wc -l

      --batch-size <size>
          传递给 -X 选项的命令的参数的最大数量。如果结果数大于给定大小，将使用剩余的参数再次运行 -X 给定的命令。批处理大小为零表示没有限制（默认值），但请注意，由于操作系统对命令行长度的最大限制，仍可能进行分批处理。

      --ignore-file <path>
          添加自定义的 '.gitignore' 格式的忽略文件。这些文件具有低优先级。

  -c, --color <when>
          声明何时在模式匹配输出中使用颜色
          
          [默认值：auto]

          可能的值：
          - auto：   如果输出将传递到交互式控制台，则显示颜色（默认值）
          - always： 总是使用带有

颜色的输出
          - never：  不使用带有颜色的输出

  -j, --threads <num>
          设置用于搜索和执行的线程数（默认值：可用 CPU 核心数）

      --max-results <count>
          将搜索结果数限制为 'count' 并立即退出。

  -1
          将搜索限制为单个结果并立即退出。这是 '--max-results=1' 的别名。

  -q, --quiet
          当标志存在时，程序不会打印任何内容，如果至少有一个匹配项，将以退出码 0 返回。否则，退出码将为 1。可以使用 '--has-results' 作为别名。

      --show-errors
          启用显示文件系统错误，例如权限不足或死符号链接的情况。

      --base-directory <path>
          将 fd 的当前工作目录更改为提供的路径。这意味着搜索结果将根据给定的基本路径显示。请注意，通过位置 <path> 参数或 '--search-path' 选项传递给 fd 的相对路径也将相对于此目录解析。

      --path-separator <separator>
          设置在打印文件路径时使用的路径分隔符。默认为操作系统特定的分隔符（Unix 上为 '/'，Windows 上为 '\'）。

      --search-path <search-path>
          提供要搜索的路径，作为位置 <path> 参数的替代方案。更改用法为 `fd [OPTIONS] --search-path <path> --search-path <path2> [<pattern>]`

      --strip-cwd-prefix
          默认情况下，相对路径在使用 -x/--exec、-X/--exec-batch 或 -0/--print0 时前缀为 './'，以减少以 '-' 开头的路径被视为命令行选项的风险。使用此标志禁用此行为。

      --one-file-system
          默认情况下，fd 将根据其他选项遍历文件系统树。使用此标志，fd 确保不会进入与其启动的文件系统不同的文件系统中。类似于 find(1) 的 -mount 或 -xdev 过滤器。

  -h, --help
          打印帮助信息（使用 `-h` 查看摘要）

  -V, --version
          打印版本信息


```