Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 查找特定文件并使用smbclient移动它们_Bash - Fatal编程技术网

Bash 查找特定文件并使用smbclient移动它们

Bash 查找特定文件并使用smbclient移动它们,bash,Bash,在dir下有多个目录和其他文件,我想用find with smbclient移动找到的文件。当然,这不起作用,因为我错过了最后一点。与共享的连接起作用,find起作用,这只是最后一点不起作用。有什么想法吗?您可以使用它从输入流创建参数 $ find /opt/backup/test -name "*.gz" -exec smbclient -A \ /opt/backup/smbclient_authentication.txt //1.1.1.1/test -c put '{}' \; 如果

在dir下有多个目录和其他文件,我想用find with smbclient移动找到的文件。当然,这不起作用,因为我错过了最后一点。与共享的连接起作用,
find
起作用,这只是最后一点不起作用。有什么想法吗?

您可以使用它从输入流创建参数

$ find /opt/backup/test -name "*.gz" -exec smbclient -A \
/opt/backup/smbclient_authentication.txt //1.1.1.1/test -c put '{}' \;
如果我理解正确,除了通过smb传输外,您还希望在本地移动文件。你可以:

xargs find /opt/backup/test -name "*.gz" \
    | smbclient -A /opt/backup/smbclient_auth.txt //1.1.1.1/test -c put 

set-e#您好,谢谢您的输入。虽然我似乎无法实现实际的put,但smbclient只是“put”set-e#我也尝试过这样一个:echo'-更新客户端文件夹-“smbclient-U$user%$pwd//$targetIP/$sharedDirRoot-c”cd$targetDir;lcd$linuxSourceDir;提示符关闭;递归;mput*;“echo'-远程客户端更新-”但mput要么全部接受,要么不接受,尝试使用mput*.gz f.ex
set -e  #<- abort on error
for f in `find -name '*.gz' -or -name '*.zip'`; do 
    smbclient -A /opt/backup/smbclient_auth.txt //1.1.1.1/test -c put "$f"
    mv "$f" ./transfered/
done