You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用find命令查找与父目录同名的.fa文件

解决方法:匹配父目录名的.fa文件查找

我明白你要做的事啦——就是在Random1_fa这类目录里,精准找出Random1.fa这种和目录名去掉_fa后缀完全匹配的文件对吧?之前用管道传sed输出给find的思路没错,但因为find的-name参数不会读取标准输入,所以直接管道行不通,咱们换个方式来实现:

方法一:遍历当前目录下的_fa子目录(非递归)

如果你的_fa目录都在同一层级,用这个循环最直接:

for dir in ./*_fa/; do
  # 去掉目录名的_fa后缀,得到基础名称
  base_name=$(basename "$dir" _fa)
  # 在目标目录里找匹配的.fa文件,-maxdepth 1表示只找当前目录不递归
  find "$dir" -maxdepth 1 -name "${base_name}.fa"
done

方法二:递归查找所有层级的_fa目录

如果你的_fa目录分散在不同子文件夹里,用这个嵌套find的写法:

# 先找出所有带_fa后缀的目录
find . -type d -name "*_fa" | while read -r target_dir; do
  base_name=$(basename "$target_dir" _fa)
  # 在每个找到的目录里搜索目标文件
  find "$target_dir" -name "${base_name}.fa"
done

为什么之前的方法没生效?

你之前尝试的ls | sed ... | find思路,问题出在find不会从标准输入读取匹配模式——它的-name参数需要直接给定字符串,管道传过去的内容find根本不会处理,所以用循环逐个处理每个目录才是正确的打开方式~

额外提示

  • 如果目录名包含空格、特殊字符(比如!@#),一定要用双引号包裹变量(比如"$dir"),避免命令出错
  • 要是需要在_fa目录的子文件夹里也找同名文件,去掉-maxdepth 1参数就行

内容的提问来源于stack exchange,提问作者K Y

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:31:17