我通过 sftp -server 连接lftp -u username, sftp://server.name.com:/directory
,它工作正常。
无论如何,我想用find. -name *someWildcardExpression -type f -delete
它来删除目录以及子目录中的所有文件。实际上,find
找到所有相关文件。但是,它也尝试访问由传递给的参数创建的目录find
:
lftp [email protected]:/directory> find . -name *someWildcardExpression -type f
# Output
./
./file_a.csv.gz.gpg
./subdir/
./subdir/file_a.csv.gz.gpg
./subdir/file_b.csv.gz.gpg
./subdir/file_c.csv.gz.gpg
find: No such file (/directory/-name)
find: No such file (/directory/*someWildcardExpression )
find: No such file (/directory/-type)
find: No such file (/directory/f)
这似乎不对。我使用find
-command 错误,还是这是一个错误?
你用错了,因为它不是
find
你认为的 -command。您在里面lftp
,而不是在通用外壳中。您没有调用find(1)
与POSIXfind
man 1 find
兼容的方法,您可以通过在 shell 中运行来阅读其手册。lftp
您正在调用其手册的一部分:没有其他选择。这就是为什么您使用的每个“选项”都被视为一个目录。
lftp
允许您通过在命令前面加上 来运行任意 shell 命令!
,但它将在本地(运行的地方lftp
)运行命令,而不是在服务器上运行。看来您想find
在服务器上运行。这是你可以做的:
find
在lftp
没有它不理解的语法的情况下使用,在本地解析其输出以模仿-name *someWildcardExpression -type f
. 您可能可以通过匹配每行-name
最后一个非尾随之后的字符串来模仿。/
你不能完全模仿-type f
,但似乎你可以模仿! -type d
(似乎目录是用斜杠打印的),问问自己是否足够。ssh
到服务器,使用它来运行服务器的find(1)
.sshfs
使远程目录显示为本地目录,然后调用本地find(1)
目录。