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

Bash脚本find命令执行报错及目录过滤失效求助

问题解决方案

一、解决脚本执行报错(No such file or directory)

你的脚本中执行cmdOutput=$("${sshCommand}")的方式错误,bash会把整个sshCommand字符串当作单个命令文件名去查找,而不是解析成find命令加参数,这就是错误码127(命令未找到)的原因。

修复方法

将执行命令的方式改为用bash -c来解析命令字符串:

cmdOutput=$(bash -c "${sshCommand}")

如果后续要通过ssh执行,直接用ssh传递命令字符串即可:

cmdOutput=$(ssh ${SSHOPTIONS} ${SSHUSERHOST} "${sshCommand}")

二、解决find命令逻辑错误(无返回结果)

你原来的find命令逻辑矛盾:! -path /home/user/inbox -a ! -path '/home/user/inbox/*'会排除所有inbox目录下的内容(因为所有子项的路径都匹配/home/user/inbox/*),同时又排除imaging目录及其子项,最终没有任何内容符合条件。

正确的find命令

根据你的需求(排除/home/user/inbox本身、/home/user/inbox/imaging本身、/home/user/inbox/imaging/validFile,其余内容全部列出),正确的命令如下:

find -L /home/user/inbox \
  ! -path /home/user/inbox \
  ! -path /home/user/inbox/imaging \
  ! -path /home/user/inbox/imaging/validFile \
  -ls

脚本中构造命令的修正

修改printf语句,去掉多余的排除条件:

printf -v sshCommand "find -L %s ! -path %s ! -path %s ! -path %s/validFile -ls" \
    "${inbox}" "${inbox}" "${VENDOR['FTPSOURCEDIR']}" "${VENDOR['FTPSOURCEDIR']}"

验证结果

执行修正后的命令,会列出以下内容:

  • /home/user/inbox/invalidDir1及其所有子项
  • /home/user/inbox/invalidDir2及其所有子项
  • /home/user/inbox/invalidFile
  • /home/user/inbox/imaging/invalidFile
  • /home/user/inbox/imaging/invalidImagingDir1及其所有子项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:46:00