我已经看过如何在 FTP 上执行 grep?- 这个问题意味着grep
需要远程文件内容中的 a ;因此,答案是该ftp
协议不支持(需要在本地下载所有远程文件,然后才能启动对其内容的搜索)。
我正在寻找更“简单”的东西 - 我只想 grep/搜索远程文件名;我想这需要以某种方式下载远程目录树。我怎么能通过命令行做到这一点?
这是一种方法 - 使用 GNU ftpsync
。
请注意, http://www.gnu.org/software/ftpsync/上的下载链接目前似乎已损坏;你需要的页面是http://savannah.gnu.org/projects/ftpsync ...看来我是通过git得到的,可能是通过地址:
git clone git://git.sv.gnu.org/ftpsync.git
Run Code Online (Sandbox Code Playgroud)
请注意,这ftpsync
是一个 Perl 脚本,位于src/
此存储库的目录中。ftpsync.py
(另请注意,在 Python 中还有一个不同的工具,可在ftpsync2d - Google Project Hosting中找到)
不管怎样,技巧就是尝试将远程 FTP 树同步到空的本地目录,同时设置ftpsync
为信息模式 ( -i
)(因此不执行实际的下载操作),并且处于详细模式。但请注意,详细模式 ( -v
) 似乎有问题(与不使用 相比,我得到的标准输出输出甚至更少-v
);所以下面我使用了-d
调试模式,它似乎像广告中那样工作。
最终,我这样做:
$ mkdir /tmp/test
$ cd /tmp/test
$ /path/to/ftpsync-git/src/ftpsync -d -i ftp://user:password@ftp.mysite.com/www . 2>&1 | tee _ftpsync_.log
Building remote tree ftp://user@ftp.mysite.com/www
Detecting if passive needed... Passive
Logging in as user.
Sync file /tmp/Q44CbrEGUU => Q44CbrEGUU
Localtime before 1393782144, Remote 1393782120, after 1393782144
Clock sync offset: 0h00m00s
Dir: in www
Mod:1327878000 Size:737 .htaccess
Mod:1237503600 Size:241 .hiddenfile
Dir: stuff in www
...
Mod:1353452400 Size:4812800 somefile
Building local tree of .
Dir:
Mod: Size:
Died at /path/to/ftpsync-git/src/ftpsync line 1011.
Run Code Online (Sandbox Code Playgroud)
完成此过程后,您应该www/
在本地本地远程服务器上获得所有文件和目录的列表_ftpsync_.log
- 因此稍后您可以通过该文件进行 grep 搜索,以搜索远程文件名和子目录名称。
好吧 - 仍然想听听是否有替代工具可以做到这一点。