使用从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
请建议
答案 0 :(得分:0)
在管道中插入 grep 是否可以解决问题?
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
不知道是否有必要检查\ r \ n-但是...... Windows ...此外,在评论 @ghoti 中注意到\r
可能无法很好地转换为所有 grep 和shell的版本。如果碰到这样的话,你可以尝试类似下面的内容:
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上使用破折号和 bash 进行了测试。)
答案 1 :(得分:0)
我在下面使用了一个,它满足了我的条件
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