代码之家  ›  专栏  ›  技术社区  ›  RCzone

使用sftp从linux计算机列出远程windows计算机上的特定文件

  •  0
  • RCzone  · 技术社区  · 6 年前

    从Linux服务器执行脚本时,使用列出或输出windows计算机目录上特定文件的脚本

    这是我们得到的当前脚本,它列出了windows目录中的所有内容,但我的要求是筛选出所需的内容

    echo "ls -l ${TARGET_ICT_DIR}\nquit\n" | sftp ${SFTP_LOGIN} | tee /tmp/ver_ict_rel_dest_${L_CURR_PID}.txt
    

    上述命令输出该windows目录中的所有文件,但我正在查找仅搜索以下文件的文件:

    anchor.jar
    rename.txt
    zipper.dat
    

    请建议

    2 回复  |  直到 6 年前
        1
  •  0
  •   Michael Back    6 年前

    是否插入 格雷普 在管道中,有什么诀窍吗?

    echo "ls -l ${TARGET_ICT_DIR}\nquit\n" |
        sftp ${SFTP_LOGIN} |
        grep -E ' (anchor\.jar|rename\.txt|zipper.dat)\r?$' |
        tee /tmp/ver_ict_rel_dest_${L_CURR_PID}.txt
    

    不知道是否需要检查,但。。。Windows。。。此外,在评论中 @戈蒂 注意到 \r 可能无法很好地转换为的所有版本 格雷普 还有壳牌。如果遇到以下情况,可以尝试以下方法:

    echo "ls -l ${TARGET_ICT_DIR}\nquit\n" |
        sftp ${SFTP_LOGIN} |
        grep -E " (anchor\.jar|rename\.txt|zipper.dat)$(printf '\r')?$" |
        tee /tmp/ver_ict_rel_dest_${L_CURR_PID}.txt
    

    (两种型号的 ls -l | grep -E ... 零件通过 猛冲 猛击 在Linux上。)

        2
  •  0
  •   RCzone    6 年前

    我使用了下面的一个,它满足了我的条件

    echo "ls -l {anchor.jar,rename.txt,zipper.dat} ${TARGET_ICT_DIR}\nquit\n" | sftp ${SFTP_LOGIN} | tee /tmp/ver_ict_rel_dest_${L_CURR_PID}.txt