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

从Linux服务器通过SFTP脚本筛选Windows远程目录特定文件

解决方案

这里有几个实用的修改方案,帮你精准筛选出目标文件:

方案1:用grep过滤sftp输出结果

直接在原有管道后追加grep命令,从完整目录列表里挑出特定文件:

echo "ls -l ${TARGET_ICT_DIR}\nquit\n" | sftp ${SFTP_LOGIN} | grep -E 'anchor\.jar|another_target_file\.txt' | tee /tmp/ver_ict_rel_dest_${L_CURR_PID}.txt
  • 细节说明:
    • -E 启用扩展正则,支持用|分隔多个目标文件名
    • 文件名里的.要转义成\.,避免grep把它当成通配符误匹配(比如anchorXjar这类无关文件)
    • 如果只筛选单个文件,简化成grep 'anchor\.jar'即可

方案2:让sftp直接返回指定文件的信息

更高效的方式是在sftp的ls命令里直接指定目标路径,这样sftp只会返回你关心的文件数据,减少不必要的传输:

# 筛选单个文件
echo "ls -l ${TARGET_ICT_DIR}/anchor.jar\nquit\n" | sftp ${SFTP_LOGIN} | tee /tmp/ver_ict_rel_dest_${L_CURR_PID}.txt

# 筛选多个文件
echo "ls -l ${TARGET_ICT_DIR}/anchor.jar ${TARGET_ICT_DIR}/utils.jar\nquit\n" | sftp ${SFTP_LOGIN} | tee /tmp/ver_ict_rel_dest_${L_CURR_PID}.txt

# 匹配同类型文件(比如所有jar包)
echo "ls -l ${TARGET_ICT_DIR}/*.jar\nquit\n" | sftp ${SFTP_LOGIN} | tee /tmp/ver_ict_rel_dest_${L_CURR_PID}.txt
  • 优势:
    • 结果更精准,不会出现误匹配
    • 数据传输量更小,执行速度更快
  • 补充:如果目标文件不存在,sftp会返回No such file or directory提示,可按需用grep -v 'No such file'过滤掉这些行

额外注意事项

  1. 路径格式:Windows的路径分隔符是\,在Linux脚本里需要转义成\\,或者直接换成/(sftp协议跨平台支持正斜杠作为路径分隔符)
  2. 特殊字符:如果文件名或路径包含空格,要用双引号包裹,比如ls -l "${TARGET_ICT_DIR}/anchor test.jar"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:15:56