如何`ls`一个远程文件夹?

oct*_*pus 13 samba remote ls

这个使用 Samba:

 $ ls smb://192.168.5.4/wdtvlivehub/abc
 ls: cannot access smb://192.168.5.4/wdtvlivehub/abc: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我以某种方式设法做到了;

  1. 浏览到远程目录。( pcmanfm 0.9.9 )
  2. 在终端中打开当前文件夹。
  3. 执行pwd获取/home/myuser/.gvfs/wdtvlivehub on 192.168.5.4
  4. ls /home/myuser/.gvfs/wdtvlivehub on 192.168.5.4工作。

..什么是更优雅的方式?

小智 13

您可以使用命令smbclient,例如:

smbclient -N //192.168.5.4/wdtvlivehub/abc -c ls
Run Code Online (Sandbox Code Playgroud)

  • 很好,但是我怎样才能获得与常规 `ls` 相同的输出(没有列也没有格式,只是一个文件列表)?这很重要,因为我想将输出通过管道传输到另一个命令。 (4认同)

use*_*686 5

您当前的使用~/.gvfs/方法很好,但您不需要 pcmanfm – 您可以使用它gvfs-mount 来连接到共享。此外,诸如gvfs-ls和 之类的工具gvfs-cp将接受您的smb:// URI。

$ gvfs-mount smb://HOST/SHARE/

$ gvfs-ls smb://HOST/SHARE/
Run Code Online (Sandbox Code Playgroud)

在最近的 gvfs 版本中,位置是$XDG_RUNTIME_DIR/gvfs/(又名/run/user/$UID/gvfs/),并且子目录名称变得更加机器可读:

$ ls /run/user/$UID/gvfs/smb-share:server=HOST,share=SHARE/
Run Code Online (Sandbox Code Playgroud)

在旧版本中:

$ ls ~/.gvfs/"SHARE on HOST"/
Run Code Online (Sandbox Code Playgroud)

(记住在路径名中引用空格。)


专门针对Samba,您可以使用该smbclient程序,也可以使用mount -t cifs. (不幸的是,后者仅限于 root。)

$ smbclient //host/share

# mount -t cifs //host/share /mnt
Run Code Online (Sandbox Code Playgroud)

(对于其它类型的文件系统,如SFTP和FTP,的sshfscurlftpfs存在分别)。