通过plink连接并重定向到文件,而不是获取文件中所需的所有输出

时间:2014-03-19 17:10:51

标签: batch-file output io-redirection plink

我在Windows中使用批处理文件通过SSH与plink连接到Linux计算机以查看两个特定文件是否是最新的(它们必须具有今天的日期)。

我在Windows批处理文件中使用的命令来执行plink:

plink.exe -ssh root@%THEIP% -m checkfiles.txt > temp\fileDates.txt

" checkfiles.txt"在Windows计算机中包含:

ls -l /folder/*file.dat.v* /folder/*file2.dat.v* > awk '{print $7}'

然后我继续阅读" fileDates.txt"查看两个文件是否存在及其日期。

我可以删除> awk' {print $ 7}' 部分并在批处理文件上手动完成。

当文件丢失时会出现问题,例如:

ls: cannot access /folder/*file.dat.v*: No such file or directory

我在屏幕上得到按摩而不是" fileDates.txt",我只得到第二个文件的日期,没有关于找不到第一个文件的错误。

我想要出现错误"没有这样的文件......" in" fileDates.txt"所以我一直尝试不同的重定向方法无济于事。

如果这不可能,我怎么知道一个文件,另一个文件或两者都丢失了?

提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可以使用2>来捕获错误消息:

ls -l /folder/*file.dat.v* /folder/*file2.dat.v* > awk '{print $7}' 2> sed '"s|ls: cannot access .*|No such file $name_of_variable_with_file_you_want_to_access|"

答案 1 :(得分:0)

我找到了答案。感谢@PlasmaPower的帮助(我会回复你的答案,但我没有足够的声誉)。

需要的是两行代码:

ls -l /folder/*file.dat.v* /folder/*file2.dat.v* &> $HOME/checkfiles.txt
cat $HOME/checkfiles.txt  | awk '{print $7}'

第一个使用stdout和stderr执行临时文件,然后执行 awk 命令的另一行。

非常感谢!