我无法从unix中的SFTP目录中将文件名复制到文本目录中(发送“ls -lt * .csv> $ {FEEDBACK_FILE_LIST} \ r”)

我无法从unix中的SFTP目录中将文件名复制到文本目录中(发送“ls -lt * .csv> $ {FEEDBACK_FILE_LIST} \ r”)

问题描述:

我想将所有.csv文件移动到$FEEDBACK_FILE_LISTsend "ls -lt *.csv > ${FEEDBACK_FILE_LIST}\r"。它不会引发任何错误,也不会将任何文件移动到本地目录$ FEEDBACK_FILE_LIST中。

请帮帮我。

编辑: 我想要得到的文件列表到本地目录.PFB ..

expect<<EOD 
spawn /usr/bin/sftp -o Port=22 ${USER}@${HOST_NAME} 
expect "password:" 
send "${PASSWD}\r" 
expect "sftp>" 
send "ls -la *.csv > ${FEEDBACK_FILE_LIST}\r" 
expect "sftp>" 
send "bye\r" 
EOD 

你有几个选项,最好将是下一个。使用

ssh [email protected] "ls -lt /directory/of/log/*.csv" > $FEEDBACK_FILE_LIST 

假设$FEEDBACK_FILE_LIST是您计算机上的文件。如果你想为此设置cron job,并且你完全确定你想要这样做!!!!你可以这样做

ssh host:[email protected] "ls -lt /directory/of/log/*.csv" > $FEEDBACK_FILE_LIST 

这样你就不会提示输入密码,用于cron作业真的很有用,但要注意,密码将是打开的脚本文件,任何人都可见。写在别的地方也无济于事,因为它可以很容易地被追踪。

如果你不需要它是一个cron作业,你可以做这样的事情在你的.bashrc

function getlogs() { 
    ssh username:[email protected] "ls -lt /directory/of/log/*.csv" > $FEEDBACK_FILE_LIST 
} 

那么你可以随时做终端

getlogs password 

这是我会这样做的方式。

+0

在远程目录(SFTP)中,我们不应该删除,实际上我们需要将.csv文件从SFTP目录复制到本地目录。因此,我们正在将文件复制到变量($ FEEDBACK_FILE_LIST /) 。我可以在日志中的文件列表,但不能移动到本地目录。 ls -la * .csv> /***/**/***/log/9006_feedback_files_list.txt ----> FEEDBACK_FILE_LIST –

+0

我将编辑答案 – campovski

+0

谢谢,但是我们不能在远程使用scp命令目录(SFTP>)。我的意思是我想获取文件列表到本地目录.PFB..expect ” 发送的 “ls -la * .CSV> $ {FEEDBACK_FILE_LIST} \ R” 期望 “SFTP>” 发送“再见\ r“ EOD –