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

如何让find命令搜索时排除指定子目录${all_trr}?

解决find搜索时忽略指定目录的问题

你的问题出在-not -path "${all_trr}"只排除了目录本身,没排除目录里的文件,所以find依然会搜到${all_trr}下的.pdb文件,导致cp报错源文件和目标文件相同。

用-prune选项可以直接跳过整个指定目录,修改后的脚本如下:

dir=$(pwd)
all_trr=${dir}/PCA
find "$dir" -maxdepth 2 -path "${all_trr}" -prune -o -name "*.pdb" -exec cp {} "${all_trr}" \;

命令解释:

  • -path "${all_trr}" -prune:匹配到${all_trr}目录后,直接跳过该目录的所有内容,不再遍历它
  • -o:逻辑“或”,表示前面的条件不满足时,执行后面的规则
  • -name "*.pdb" -exec cp {} "${all_trr}" \;:对除了${all_trr}之外的目录下的.pdb文件执行复制操作

另外注意给变量加双引号,避免路径里有空格时出问题。

内容的提问来源于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 12:15:00