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

如何为find命令指定当前目录的上级搜索空间(反向maxdepth)?

解决find命令向上级目录搜索并排除当前子文件夹的问题

场景说明

当前工作目录:

/home/user/Bureau/Analyse/BCL_MDtest_haddock2/Analysis

目标文件(lig*.png)所在路径:

/home/user/Bureau/Analyse/BCL_MDtest_haddock2/!plots

需求:在当前目录的上级目录空间搜索目标文件,同时不遍历当前目录下的任何子文件夹。


方案一:从父目录开始搜索并排除当前目录

修改后的脚本如下:

# 要搜索的模式
lig="lig*"
output=$(pwd)
# 从当前目录的父目录启动搜索,排除当前目录,匹配后复制到当前目录
find ../ -path "./Analysis" -prune -o -name "${lig}*.png" -exec cp "{}" "${output}" \;

参数解释:

  • ../:指定搜索起始点为当前目录的父目录(即/home/user/Bureau/Analyse/BCL_MDtest_haddock2),这就是你需要的“上级搜索空间”。
  • -path "./Analysis" -prune:明确排除当前目录(Analysis),避免find遍历其下的所有子文件夹。
  • -o:逻辑或,意为前面的排除条件不生效时,执行后续的文件匹配与复制操作。
  • -name "${lig}*.png":匹配所有以lig开头的PNG文件。
  • -exec cp "{}" "${output}" \;:将找到的文件复制到当前工作目录。

方案二:直接指定目标文件夹(更高效)

既然已经明确知道目标文件的所在文件夹,直接指定该路径搜索会更高效:

lig="lig*"
output=$(pwd)
# 直接在目标文件夹搜索,仅遍历该文件夹本身
find "/home/user/Bureau/Analyse/BCL_MDtest_haddock2/!plots" -maxdepth 1 -name "${lig}*.png" -exec cp "{}" "${output}" \;

参数解释:

  • -maxdepth 1:限制find仅搜索指定文件夹的一级内容,不进入其子文件夹。
  • 直接指定目标路径,避免无关目录的遍历,提升搜索效率。

原脚本问题说明

原命令中../../指向当前目录往上两级(即/home/user/Bureau/Analyse),结合-maxdepth 1只会搜索该目录下的一级子目录,无法定位到BCL_MDtest_haddock2/!plots中的目标文件,因此无法完成复制。

内容的提问来源于stack exchange,提问作者James Starlight

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 19:49:59