ftp列表文件名通过bash

时间:2017-12-15 10:27:12

标签: bash ftp

我需要提取ftp服务器的文件列表(只是文件名)

我将所有命令放在txt文件中并使用

调用它
ftp -ivn < ftp.command > ls.txt

(ftp.command的内容)

open 192.168.43.12
user user1 pasw1
ls

所以,ls.txt包含

drwxr-xr-x    4 1000     100          4096 Dec 05 05:09 FILE1
drwxrwxrwx    2 1000     100          4096 Dec 11 09:38 FILE3
drwxrwxrwx    2 1000     100          4096 Dec 05 09:11 FILE2

我需要提取

FILE1
FILE2
FILE3

如何解析ls的输出?

由于

3 个答案:

答案 0 :(得分:0)

找到解决方案

grep -oE '[^ ]+$' ls.txt

答案 1 :(得分:0)

实际上有很多方法可以做到这一点,这里很少:

  1. 而不是ls使用ls whateveryouwant | xargs -n 1 basename

  2. 如果您知道路径,请ls /path/*.txt | sed -r 's/^.+\///'

  3. ls -1 *.txt

答案 2 :(得分:0)

要仅检索文件名列表,请使用nlist代替ls

在FTP协议级别,命令为NLST

可能仍然存在您不想存储的输出(在我的简单ftp客户端中,包含状态消息)。

FTP客户端和服务器在实现细节方面有很大不同,但协议提供了这种功能,因此您无需在收到的文件名列表上进行任何其他解析。