通过bash的ftp列表文件名

通过bash的ftp列表文件名,bash,ftp,Bash,Ftp,我需要提取ftp服务器的文件列表(只是文件名) 我将所有的命令放在一个txt文件中,并用 ftp -ivn < ftp.command > ls.txt 因此,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

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

我将所有的命令放在一个txt文件中,并用

ftp -ivn < ftp.command > ls.txt
因此,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的输出

谢谢

找到了解决方案

grep -oE '[^ ]+$' ls.txt
找到了解决办法

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

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

  • 不要使用
    ls
    使用
    ls whateveryouwant|xargs-n 1 basename

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

  • ls-1*.txt


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

  • 不要使用
    ls
    使用
    ls whateveryouwant|xargs-n 1 basename

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

  • ls-1*.txt


  • 要仅检索文件名列表,请使用
    nlist
    而不是
    ls

    在FTP协议级别上,命令为
    NLST

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


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

    要仅检索文件名列表,请使用
    nlist
    而不是
    ls

    在FTP协议级别上,命令为
    NLST

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


    FTP客户端和服务器在实现细节上有很大不同,但协议提供了这一功能,因此您不必对收到的文件名列表进行任何额外的解析。

    然后,在文件本身中,将ls替换为ls-1*。txt然后,在文件本身中,将ls替换为ls-1*.txt如果文件名包含空格,则此操作显然会失败。如果文件名包含一个控制字符,并且
    ftp
    服务器将其显示为
    或其他任何内容,则可能也会失败。如果文件名包含空格,则显然会失败。如果文件名包含一个控制字符,并且
    ftp
    服务器将其显示为
    或其他任何内容,那么它也可能会失败。
    ls-1
    是一种只列出文件名的好方法,如果ftp服务器支持的话。这很愚蠢。使用专用FTP命令,而不是依赖于服务器本地操作系统的命令。也一样。这取决于你的观点。依我看,你的回答很愚蠢
    nlist
    本身不是一个“专用FTP命令”,而是由操作系统执行的命令,但并不总是可用。我只是在一台服务器上试用了它,但得到的
    命令无效。
    我保留了我的评论-对于某些用户来说,这可能非常方便,具体取决于他们的具体使用情况。您的
    ftp
    客户端可能会调用其他命令。查看是否可以发送简单的FTP协议级命令(请尝试
    quote
    maybe)和/或查阅FTP客户端的文档或联机帮助。有时,它们是如此“用户友好”,以至于你无法判断命令的实际功能。
    ls-1
    是一种只列出文件名的好方法,如果FTP服务器支持的话。这很愚蠢。使用专用FTP命令,而不是依赖于服务器本地操作系统的命令。也一样。这取决于你的观点。依我看,你的回答很愚蠢
    nlist
    本身不是一个“专用FTP命令”,而是由操作系统执行的命令,但并不总是可用。我只是在一台服务器上试用了它,但得到的
    命令无效。
    我保留了我的评论-对于某些用户来说,这可能非常方便,具体取决于他们的具体使用情况。您的
    ftp
    客户端可能会调用其他命令。查看是否可以发送简单的FTP协议级命令(请尝试
    quote
    maybe)和/或查阅FTP客户端的文档或联机帮助。有时它们是如此“用户友好”,以至于您无法判断命令的实际功能。