目录

fd 在鸿蒙PC上的构建与适配

目录


工具简介

fd 是一个用 Rust 编写的文件搜索工具,是传统 Unix find 命令的简单、快速、用户友好的替代品。fd 的设计理念是提供合理的默认设置,让大多数常见用例变得简单直观。

什么是 fd?

fd 是一个命令行工具,用于在文件系统中查找文件和目录。虽然它不旨在支持 find 的所有强大功能,但它为大多数用例提供了合理的(有主见的)默认设置。

核心优势

  • 简单直观fd PATTERNfind -iname '*PATTERN*' 更简单
  • 速度极快:并行化目录遍历,搜索速度远超传统 find
  • 用户友好:智能默认设置,减少命令行参数
  • 现代化:使用 Rust 编写,内存安全,性能优异

核心特性

  1. 直观的语法

    • fd PATTERN 替代 find -iname '*PATTERN*'
    • 默认在当前目录递归搜索
    • 模式匹配包含关系,而非精确匹配
  2. 正则表达式支持

    • 默认使用正则表达式模式
    • 支持 glob 模式(使用 -g 选项)
    • 完整的正则表达式语法支持
  3. 极速搜索

    • 并行化目录遍历
    • 多线程处理,充分利用多核 CPU
    • 比传统 find 快数倍
  4. 颜色高亮

    • 使用颜色区分不同类型的文件(与 ls 相同)
    • 搜索结果清晰易读
    • 支持终端颜色主题
  5. 智能大小写

    • 默认大小写不敏感
    • 如果模式包含大写字母,自动切换为大小写敏感
    • 符合用户直觉
  6. 智能过滤

    • 默认忽略隐藏目录和文件
    • 默认忽略 .gitignore 中的模式
    • 减少噪音,聚焦相关结果
  7. 并行命令执行

    • 支持使用 -x 选项对搜索结果执行命令
    • 可以并行处理多个文件
    • 提高批量操作效率
  8. 命令名称简短

    • fdfind 短 50%
    • 输入更快,减少打字错误

开发语言与设计优势

Rust 语言的优势

  • 内存安全:编译时保证内存安全,避免常见的内存错误
  • 高性能:零成本抽象,性能接近 C/C++
  • 并发安全:内置并发安全保证,多线程搜索更安全
  • 跨平台:单一代码库支持多个平台
  • 现代工具链:Cargo 包管理器,依赖管理简单

设计优势

  • 零运行时依赖:单一可执行文件,部署简单
  • 快速启动:启动速度快,适合频繁使用
  • 资源占用低:内存和 CPU 占用小
  • 易于集成:可以轻松集成到脚本和工具链中

核心用途与场景

基本用法

1. 简单搜索
# 搜索包含 "netflix" 的文件
fd netflix

# 输出示例:
# Software/python/imdb-ratings/netflix-details.py
2. 正则表达式搜索
# 搜索以 "x" 开头,以 "rc" 结尾的文件
fd '^x.*rc$'

# 搜索所有 .rs 文件
fd '\.rs$'

# 搜索包含数字的文件名
fd '[0-9]+'
3. 指定搜索目录
# 在 /etc 目录中搜索 "passwd"
fd passwd /etc

# 输出示例:
# /etc/default/passwd
# /etc/pam.d/passwd
# /etc/passwd
4. 列出所有文件
# 递归列出当前目录所有文件
fd

# 列出指定目录所有文件
fd . /path/to/directory
5. 文件类型过滤
# 只搜索文件(不包括目录)
fd -t f pattern

# 只搜索目录
fd -t d pattern

# 搜索符号链接
fd -t l pattern
6. 大小写敏感搜索
# 大小写敏感搜索(默认大小写不敏感)
fd -s Pattern

# 大小写不敏感搜索(默认)
fd pattern
7. 包含隐藏文件
# 搜索时包含隐藏文件和目录
fd -H pattern

# 搜索时包含 .gitignore 中的文件
fd -I pattern
8. 限制搜索深度
# 最多搜索 3 层目录
fd -d 3 pattern

# 精确搜索深度为 2
fd --max-depth 2 pattern

实际应用场景

场景 1:快速查找配置文件
# 查找所有配置文件
fd config

# 查找特定类型的配置文件
fd '\.conf$'
fd '\.json$'
fd '\.yaml$'
场景 2:代码搜索
# 查找所有 Rust 源文件
fd '\.rs$'

# 查找所有测试文件
fd test

# 查找包含特定函数的文件
fd -x grep -l "function_name"
场景 3:批量文件操作
# 删除所有临时文件
fd -t f '\.tmp$' -x rm

# 批量重命名文件
fd '\.txt$' -x mv {} {}.bak

# 批量转换文件编码
fd '\.txt$' -x iconv -f GBK -t UTF-8 {} -o {}.utf8
场景 4:项目清理
# 查找所有编译产物
fd target

# 查找所有日志文件
fd '\.log$'

# 查找所有备份文件
fd '\.bak$'
场景 5:文档管理
# 查找所有 Markdown 文档
fd '\.md$'

# 查找所有 PDF 文件
fd '\.pdf$'

# 查找最近修改的文件(结合 find)
fd -t f | xargs ls -lt | head -10

高级用法

1. 并行命令执行
# 对所有找到的文件执行命令
fd '\.rs$' -x cargo fmt

# 并行执行(默认)
fd '\.txt$' -x wc -l

# 串行执行
fd '\.txt$' -X wc -l
2. 排除特定模式
# 排除 node_modules 目录
fd pattern --exclude node_modules

# 排除多个目录
fd pattern --exclude node_modules --exclude target
3. 完整路径匹配
# 完整路径匹配(而非文件名)
fd '/usr/bin'

# 文件名匹配(默认)
fd bin
4. 结合其他工具
# 结合 grep 搜索文件内容
fd '\.rs$' -x grep -n "TODO"

# 结合 fzf 进行交互式选择
fd | fzf

# 结合 ripgrep 进行内容搜索
fd '\.rs$' | xargs rg "pattern"

常见报错与解决方案

问题 1:安装失败

错误信息

error: failed to compile `fd-find`

原因:Rust 工具链未安装或版本不兼容。

解决方案

# 安装 Rust 工具链
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# 或使用包管理器
# macOS
brew install rust

# Ubuntu/Debian
sudo apt install rustc cargo

# 验证安装
rustc --version
cargo --version

问题 2:权限错误

错误信息

install: /usr/local/bin/fd: Permission denied

原因:尝试安装到系统目录,需要 root 权限。

解决方案

# 使用 sudo 安装(不推荐用于交叉编译)
sudo make install

# 或使用 DESTDIR 安装到指定目录
make install DESTDIR=/path/to/install prefix=/usr

# 或安装到用户目录
cargo install --path . --root ~/.local

问题 3:找不到命令

错误信息

fd: command not found

原因:fd 未安装或不在 PATH 中。

解决方案

# 检查是否安装
which fd

# 检查 PATH
echo $PATH

# 添加到 PATH(如果安装到用户目录)
export PATH="$HOME/.local/bin:$PATH"

# 或创建符号链接
sudo ln -s /path/to/fd /usr/local/bin/fd

问题 4:构建失败

错误信息

error: failed to run custom build command for `xxx`

原因:缺少系统依赖或编译工具。

解决方案

# 安装编译工具
# macOS
xcode-select --install

# Ubuntu/Debian
sudo apt install build-essential

# 检查 Rust 工具链
rustup show

# 更新 Rust 工具链
rustup update

问题 5:搜索速度慢

错误信息:搜索大型目录时速度很慢。

原因:搜索了不必要的目录或文件。

解决方案

# 排除大型目录
fd pattern --exclude node_modules --exclude target

# 限制搜索深度
fd pattern -d 3

# 只搜索文件(不包括目录)
fd -t f pattern

# 使用更精确的模式
fd '^pattern$'  # 精确匹配

问题 6:颜色显示异常

错误信息:终端中颜色显示不正确。

原因:终端不支持颜色或颜色配置错误。

解决方案

# 禁用颜色
fd --no-color pattern

# 强制启用颜色
fd --color always pattern

# 检查终端颜色支持
echo $TERM

# 设置终端类型
export TERM=xterm-256color

适配开源鸿蒙 PC 端的要点

系统环境差异

1. 包管理器

HarmonyOS PC 使用 HNP(HarmonyOS Native Package)作为包管理格式,而不是传统的 aptyumbrew

影响

  • 需要创建 HNP 包配置文件(hnp.json
  • 安装路径遵循 HNP 规范
  • 包管理命令不同
2. 依赖库

fd 使用 Rust 编写,主要依赖:

  • 标准库:Rust 标准库,跨平台兼容
  • 系统调用:通过 libcnix crate 访问系统功能
  • 文件系统:通过 ignore crate 处理文件系统操作
  • 正则表达式:通过 regex crate 处理模式匹配

HarmonyOS 兼容性

  • Rust 标准库应该兼容
  • libc crate 需要适配 HarmonyOS 的系统调用
  • nix crate 需要适配 HarmonyOS 的 POSIX API
  • 文件系统操作应该兼容
3. 交叉编译

HarmonyOS 使用 ARM64 架构,需要交叉编译:

  • 目标平台aarch64-unknown-linux-musl
  • 工具链:HarmonyOS SDK 的 LLVM 工具链
  • 链接器:LLD(LLVM 链接器)

Rust 交叉编译适配

1. 目标平台配置

fd 使用 Rust 的交叉编译支持:

# 设置目标平台
export TARGET=aarch64-unknown-linux-musl

# 安装目标平台的 Rust 标准库
rustup target add ${TARGET}
2. 工具链配置

需要配置 Rust 使用 HarmonyOS SDK 的工具链:

# 设置编译器
export CC_aarch64_unknown_linux_musl=${OHOS_SDK}/native/llvm/bin/clang
export CXX_aarch64_unknown_linux_musl=${OHOS_SDK}/native/llvm/bin/clang++

# 设置链接器
export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_MUSL_LINKER=${CC_aarch64_unknown_linux_musl}
3. Makefile 构建系统适配

fd 使用 Makefile 作为构建系统:

关键变量

  • PROFILE: 构建配置(release/debug)
  • EXE: 可执行文件路径
  • prefix: 安装前缀(默认 /usr/local
  • DESTDIR: 安装根目录(用于打包)

适配要点

  • 使用 DESTDIRprefix 控制安装路径
  • 确保安装到 HNP 目录结构
  • 创建必要的目录结构

关键适配要点总结

  1. Rust 工具链配置:设置正确的目标平台和编译器
  2. 安装路径控制:使用 DESTDIRprefix 控制安装路径
  3. 目录结构:遵循 HNP 规范的目录结构
  4. 包格式:使用 HNP 格式打包
  5. 依赖管理:确保所有 Rust 依赖兼容目标平台

鸿蒙适配中的报错解决过程

报错 1:构建系统识别错误

错误信息

make: *** No rule to make target `clean'. Stop.

原因分析
fd 的 Makefile 中没有定义 clean 目标,但构建脚本尝试运行 make clean

排查思路

  1. 检查 Makefile

    grep -E "^clean|^\.PHONY" Makefile
    # 发现没有 clean 目标
    
  2. 检查构建脚本

    grep "make clean" build_ohos.sh
    # 发现构建脚本调用了 make clean
    

解决方案

修改构建脚本,忽略 make clean 的错误:

# 清理之前的构建(忽略错误,因为 Makefile 可能没有 clean 目标)
make clean 2>/dev/null || true

报错 2:安装路径权限错误

错误信息

install: /usr/local/bin/fd: Permission denied
make: *** [install] Error 71

原因分析
make install 尝试安装到系统目录 /usr/local/bin,需要 root 权限。在交叉编译时,不应该安装到系统目录。

排查思路

  1. 检查 Makefile 的 install 目标

    grep -A 5 "^install:" Makefile
    # 发现使用了 DESTDIR 和 prefix
    
  2. 检查环境变量

    echo $DESTDIR
    echo $prefix
    # 发现未设置或设置不正确
    
  3. 查看 Makefile 变量定义

    prefix=/usr/local
    bindir=$(prefix)/bin
    

解决方案

设置 DESTDIRprefix 环境变量:

# 设置安装路径变量
export DESTDIR=${TREE_INSTALL_HNP_PATH}
# 在 make install 时传递 prefix=/usr 来覆盖 Makefile 中的默认值 /usr/local
make install prefix=/usr

工作原理

  • DESTDIR 是安装的根目录
  • prefix 是相对于 DESTDIR 的路径
  • 最终安装路径 = ${DESTDIR}${prefix} = ${TREE_INSTALL_HNP_PATH}/usr
  • Makefile 会创建 ${DESTDIR}${prefix}/bin${DESTDIR}${prefix}/share/... 等目录

报错 3:安装目录不存在

错误信息

install: /Users/jianguo/HarmonyOSPC/build/data/service/hnp//fd.org/fd_8.7.0/usr/local/bin/fd: No such file or directory

原因分析
虽然设置了 DESTDIR,但 Makefile 中的 prefix 默认值是 /usr/local,环境变量 prefix=/usr 没有覆盖 Makefile 中的变量。

排查思路

  1. 检查实际安装路径

    # Makefile 中使用的是 $(prefix),默认值是 /usr/local
    # 所以实际路径是 ${DESTDIR}/usr/local/bin/fd
    
  2. 检查 Makefile 变量优先级

    • Makefile 中定义的变量优先级高于环境变量
    • 需要在 make install 时传递 prefix=/usr 来覆盖

解决方案

make install 命令中传递 prefix 参数:

# 设置安装路径变量
export DESTDIR=${TREE_INSTALL_HNP_PATH}
# 在 make install 时传递 prefix=/usr 来覆盖 Makefile 中的默认值 /usr/local
make install prefix=/usr

报错 4:目录结构不完整

错误信息

cp: directory /Users/jianguo/HarmonyOSPC/build/data/service/hnp//fd.org/fd_8.7.0 does not exist
Error: Failed to copy hnp.json

原因分析
安装目录不存在,make install 可能失败或目录未创建。

解决方案

提前创建所有必要的安装目录:

# 创建安装目录
mkdir -p ${TREE_INSTALL_HNP_PATH}/usr/bin
mkdir -p ${TREE_INSTALL_HNP_PATH}/usr/share/bash-completion/completions
mkdir -p ${TREE_INSTALL_HNP_PATH}/usr/share/fish/vendor_completions.d
mkdir -p ${TREE_INSTALL_HNP_PATH}/usr/share/zsh/site-functions
mkdir -p ${TREE_INSTALL_HNP_PATH}/usr/share/man/man1

适配过程中的关键决策

  1. 使用 DESTDIR 和 prefix:解决安装路径问题
  2. 提前创建目录:确保安装目录存在
  3. 传递 prefix 参数:覆盖 Makefile 中的默认值
  4. 错误处理完善:添加详细的错误检查和提示

构建脚本详解

build_ohos.sh 完整代码

export TREE_INSTALL_HNP_PATH=${HNP_PUBLIC_PATH}/fd.org/fd_8.7.0

sys_prefix=${PREFIX}
export PREFIX=${TREE_INSTALL_HNP_PATH}
echo "${PREFIX}"

# 创建安装目录
mkdir -p ${TREE_INSTALL_HNP_PATH}/usr/bin
mkdir -p ${TREE_INSTALL_HNP_PATH}/usr/share/bash-completion/completions
mkdir -p ${TREE_INSTALL_HNP_PATH}/usr/share/fish/vendor_completions.d
mkdir -p ${TREE_INSTALL_HNP_PATH}/usr/share/zsh/site-functions
mkdir -p ${TREE_INSTALL_HNP_PATH}/usr/share/man/man1

# 清理之前的构建(忽略错误,因为 Makefile 可能没有 clean 目标)
make clean 2>/dev/null || true

# 构建
echo "Building fd..."
make VERBOSE=1 || {
    echo "Error: Build failed"
    exit 1
}

# 安装
echo "Installing fd..."
# 设置安装路径变量
export DESTDIR=${TREE_INSTALL_HNP_PATH}
# 在 make install 时传递 prefix=/usr 来覆盖 Makefile 中的默认值 /usr/local
# 使用 DESTDIR 安装,这样会安装到 ${DESTDIR}/usr = ${TREE_INSTALL_HNP_PATH}/usr
make install prefix=/usr || {
    echo "Error: Install failed"
    exit 1
}

# 复制 hnp.json
cp hnp.json ${TREE_INSTALL_HNP_PATH}/ || {
    echo "Error: Failed to copy hnp.json"
    exit 1
}

# 打包
echo "Packaging..."
pushd ${TREE_INSTALL_HNP_PATH}/../
    ${HNP_TOOL} pack -i ${TREE_INSTALL_HNP_PATH} -o ${ARCHIVE_PATH}/ || {
        echo "Error: HNP pack failed"
        popd
        exit 1
    }
    tar -zvcf ${ARCHIVE_PATH}/ohos_fd_8.7.0.tar.gz fd_8.7.0/ || {
        echo "Error: Tar packaging failed"
        popd
        exit 1
    }
popd

# 打印构建结果
echo ""
echo "=========================================="
echo "Build completed successfully!"
echo "=========================================="
echo "HNP Package: ${ARCHIVE_PATH}/fd.org_fd_8.7.0.hnp"
echo "Tar Archive: ${ARCHIVE_PATH}/ohos_fd_8.7.0.tar.gz"
echo "Installation Path: ${TREE_INSTALL_HNP_PATH}"
echo "=========================================="
echo ""

export PREFIX=${sys_prefix}

脚本关键点解析

1. 安装目录创建

作用:确保安装目录存在,避免安装失败。

实现

mkdir -p ${TREE_INSTALL_HNP_PATH}/usr/bin
mkdir -p ${TREE_INSTALL_HNP_PATH}/usr/share/bash-completion/completions
mkdir -p ${TREE_INSTALL_HNP_PATH}/usr/share/fish/vendor_completions.d
mkdir -p ${TREE_INSTALL_HNP_PATH}/usr/share/zsh/site-functions
mkdir -p ${TREE_INSTALL_HNP_PATH}/usr/share/man/man1
2. 构建过程

作用:使用 Makefile 构建 fd。

实现

make VERBOSE=1

说明

  • VERBOSE=1 显示详细的构建信息
  • Makefile 会调用 cargo build --profile release --locked
  • 构建产物在 target/release/fd
3. 安装路径控制

作用:使用 DESTDIRprefix 控制安装路径。

实现

export DESTDIR=${TREE_INSTALL_HNP_PATH}
make install prefix=/usr

路径映射

  • bindir = $(prefix)/bin${DESTDIR}/usr/bin
  • datadir = $(prefix)/share${DESTDIR}/usr/share
  • 最终安装路径:${TREE_INSTALL_HNP_PATH}/usr/bin/fd
4. 打包过程

作用:创建 HNP 包和 tar 归档。

实现

${HNP_TOOL} pack -i ${TREE_INSTALL_HNP_PATH} -o ${ARCHIVE_PATH}/
tar -zvcf ${ARCHIVE_PATH}/ohos_fd_8.7.0.tar.gz fd_8.7.0/

HNP 包配置

hnp.json

{
    "type": "hnp-config",
    "name": "fd",
    "version": "8.7.0",
    "install": {}
}

安装目录结构

fd_8.7.0/
├── usr/
│   ├── bin/
│   │   └── fd                    # 主程序
│   └── share/
│       ├── bash-completion/
│       │   └── completions/
│       │       └── fd             # Bash 自动补全
│       ├── fish/
│       │   └── vendor_completions.d/
│       │       └── fd.fish        # Fish shell 自动补全
│       ├── zsh/
│       │   └── site-functions/
│       │       └── _fd            # Zsh 自动补全
│       └── man/
│           └── man1/
│               └── fd.1           # 手册页
└── hnp.json                       # HNP 包配置

构建结果

构建成功后,会生成以下文件:

  1. HNP 包fd.org_fd_8.7.0.hnp

    • HarmonyOS 原生包格式
    • 可以直接安装到 HarmonyOS 设备
  2. Tar 归档ohos_fd_8.7.0.tar.gz

    • 压缩的 tar 归档
    • 包含完整的安装目录结构

构建输出示例

==========================================
Build completed successfully!
==========================================
HNP Package: /path/to/archive/fd.org_fd_8.7.0.hnp
Tar Archive: /path/to/archive/ohos_fd_8.7.0.tar.gz
Installation Path: /path/to/data/service/hnp/fd.org/fd_8.7.0
==========================================

仓库地址与安装方式

仓库地址

HarmonyOS 适配版本

  • 仓库:https://gitcode.com/nutpi/fd
  • Tag8.7.0_ohos
  • 原始项目:https://github.com/sharkdp/fd

安装方式

Linux(通用)

使用包管理器

# Ubuntu/Debian
sudo apt install fd-find

# Fedora
sudo dnf install fd-find

# Arch Linux
sudo pacman -S fd

# Alpine Linux
apk add fd

使用 Cargo 安装

# 从 crates.io 安装
cargo install fd-find

# 从源码安装
git clone https://github.com/sharkdp/fd.git
cd fd
cargo install --path .

使用预编译二进制

# 下载预编译二进制
wget https://github.com/sharkdp/fd/releases/download/v8.7.0/fd-v8.7.0-x86_64-unknown-linux-gnu.tar.gz
tar -xzf fd-v8.7.0-x86_64-unknown-linux-gnu.tar.gz
sudo cp fd-v8.7.0-x86_64-unknown-linux-gnu/fd /usr/local/bin/
macOS

使用 Homebrew

brew install fd

使用 MacPorts

sudo port install fd

使用 Cargo

cargo install fd-find
Windows

使用 Chocolatey

choco install fd

使用 Scoop

scoop install fd

使用 Cargo

cargo install fd-find
开源鸿蒙 PC

使用 HNP 包

# 安装 HNP 包
hnp install fd.org_fd_8.7.0.hnp

# 或使用 tar 归档
tar -xzf ohos_fd_8.7.0.tar.gz
# 手动复制到系统路径

从源码交叉编译

# 1. 克隆仓库
git clone https://gitcode.com/nutpi/fd.git
cd fd
git checkout 8.7.0_ohos

# 2. 设置 HarmonyOS SDK 路径
export OHOS_SDK=/path/to/ohosdk

# 3. 运行构建脚本
./build_ohos.sh

# 4. 安装生成的 HNP 包
hnp install fd.org_fd_8.7.0.hnp

验证安装

# 检查版本
fd --version

# 测试基本功能
fd test

# 查看帮助
fd --help

总结

适配要点

  1. 构建系统:使用 Makefile,需要正确配置安装路径
  2. 安装路径:使用 DESTDIRprefix 控制
  3. 目录创建:提前创建安装目录
  4. 参数传递:在 make install 时传递 prefix 参数覆盖默认值
  5. 包格式:遵循 HNP 规范

关键决策

  1. DESTDIR 和 prefix:解决安装路径问题
  2. 提前创建目录:避免安装失败
  3. 传递 prefix 参数:覆盖 Makefile 中的默认值

优势

  • 高性能:Rust 编写,并行搜索,速度极快
  • 用户友好:直观语法,智能默认设置
  • 功能强大:正则表达式、并行执行、颜色高亮
  • 易于集成:可以轻松集成到脚本和工具链中

适用场景

  • 快速文件搜索
  • 代码库导航
  • 批量文件操作
  • 项目清理
  • 文档管理

FAQ

Q1: fd 和 find 有什么区别?

A: 主要区别:

  • 语法:fd 使用更直观的语法,fd pattern vs find -iname '*pattern*'
  • 速度:fd 使用并行搜索,通常比 find 快数倍
  • 默认行为:fd 默认忽略隐藏文件和 .gitignore,减少噪音
  • 功能:find 功能更全面,fd 专注于常见用例

Q2: 如何搜索隐藏文件?

A:

# 使用 -H 选项
fd -H pattern

# 或使用 -a 选项(包含所有文件)
fd -a pattern

Q3: 如何搜索特定类型的文件?

A:

# 只搜索文件
fd -t f pattern

# 只搜索目录
fd -t d pattern

# 搜索符号链接
fd -t l pattern

# 使用文件扩展名
fd '\.rs$'

Q4: 如何在 HarmonyOS 上使用 fd?

A:

  1. 安装 HNP 包:hnp install fd.org_fd_8.7.0.hnp
  2. 或从源码交叉编译
  3. 使用方式与 Linux 相同

Q5: 为什么需要设置 DESTDIR 和 prefix?

A:

  • DESTDIR 用于指定安装根目录(用于打包)
  • prefix 用于指定相对于 DESTDIR 的路径
  • 这样可以安装到构建目录而不是系统目录

Q6: 如何提高搜索速度?

A:

# 排除大型目录
fd pattern --exclude node_modules --exclude target

# 限制搜索深度
fd pattern -d 3

# 只搜索文件(不包括目录)
fd -t f pattern

# 使用更精确的模式
fd '^pattern$'  # 精确匹配

Q7: 可以并行执行命令吗?

A: 可以:

# 并行执行(默认)
fd '\.rs$' -x cargo fmt

# 串行执行
fd '\.rs$' -X cargo fmt

Q8: 如何输出到文件?

A:

# 重定向输出
fd pattern > results.txt

# 或使用 -x 执行命令
fd '\.txt$' -x cat {} > all.txt

相关链接

  • fd 官方网站:https://github.com/sharkdp/fd
  • fd 文档:https://github.com/sharkdp/fd#readme
  • HarmonyOS 适配仓库:https://gitcode.com/nutpi/fd
  • HarmonyOS 开发者文档:https://developer.harmonyos.com/
  • PC代码仓
  • PC社区
Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐