Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在unix中使用SFTP获取文件大小和名称的干净列表_Linux_Unix_Awk_Sftp - Fatal编程技术网

Linux 在unix中使用SFTP获取文件大小和名称的干净列表

Linux 在unix中使用SFTP获取文件大小和名称的干净列表,linux,unix,awk,sftp,Linux,Unix,Awk,Sftp,我希望仅当文件大小小于1GB时,才使用SFTP逐个从服务器获取文件列表 我正在运行以下命令: $sftp -oIdentityFile=/home/user/.ssh/id_rsa -oPort=22 user@hostname >list.txt <<EOF cd upload/Example ls -l iurygify*.zip EOF 然后,我可以使用awk计算并获取可以保存到日志中供参考的大小和文件名,然后仅下载满足1GB标准的文件 有没有更简单的方法来获得这个文件

我希望仅当文件大小小于1GB时,才使用SFTP逐个从服务器获取文件列表

我正在运行以下命令:

$sftp -oIdentityFile=/home/user/.ssh/id_rsa -oPort=22 user@hostname >list.txt <<EOF
cd upload/Example
ls -l iurygify*.zip
EOF
然后,我可以使用awk计算并获取可以保存到日志中供参考的大小和文件名,然后仅下载满足1GB标准的文件

有没有更简单的方法来获得这个文件列表和大小?我想避免
list.txt
中提示和命令的垃圾元素,不想通过
expect
命令来实现这一点


我们正在使用SSH密钥身份验证

可能使用
lftp
而不是
sftp

$ lftp sftp://xxx > list.txt <<EOF
> open
> ls -l
> EOF

您可以将
sftp命令
放在批处理文件中并过滤输出-无需
expect

echo 'ls -l' > t
sftp -b t -oIdentityFile=/home/user/.ssh/id_rsa -oPort=22 user@hostname | grep -v 'sftp>' >list.txt
或者更进一步,在同一步骤中过滤掉“合适的尺寸”:

sftp -b t -oIdentityFile=/home/user/.ssh/id_rsa -oPort=22 user@hostname | awk '$1!~/sftp>/&&$5<1000000000' >list.txt

sftp-bt-oIdentityFile=/home/user/.ssh/id\u rsa-oPort=22user@hostname|啊!一美元~/sftp>/&$5我是唯一一个通过使用底层ssh上传和运行代码来解决此类问题的人吗?@Joshua不知道,不在乎?=}我只是给了这个人一个解决他眼前问题的办法——请随意提供一个替代方案;)
echo 'ls -l' > t
sftp -b t -oIdentityFile=/home/user/.ssh/id_rsa -oPort=22 user@hostname | grep -v 'sftp>' >list.txt
sftp -b t -oIdentityFile=/home/user/.ssh/id_rsa -oPort=22 user@hostname | awk '$1!~/sftp>/&&$5<1000000000' >list.txt