2013-04-26 2 views
0
$ find /opt/backup/test -name "*.gz" -exec smbclient -A \ 
/opt/backup/smbclient_authentication.txt //1.1.1.1/test -c put '{}' \; 

Есть несколько каталогов и другие файлы, а затем *.gz под режем и я хочу, чтобы переместить файлы, найденные с помощью функции поиска с smbclient. Конечно, это не работает, так как я пропускаю последний бит. Подключение к ресурсу работает, и find работает, это просто последний бит, который этого не делает. Есть идеи?Найти конкретные файлы и перемещать их с smbclient

ответ

1

Вы можете использовать xargs для создания параметров из входного потока

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

Если я правильно понимаю, что вы хотите переместить файлы локально, кроме передачи виа кого-л. Вы можете:

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 
+0

привет, спасибо за ввод. Хотя я не могу заставить фактический запуск работать, smbclient просто идет «put » – user2323684

+0

set -e # <- abort при ошибке для f в 'find/opt/backup/test -name '* .gz''; сделать smbclient -A /opt/backup/smbclient_authentication.txt //1.1.1.1/test -c "положить $ F" сделано дает мне: NT_STATUS_OBJECT_NAME_INVALID открытие удаленного файла \ /opt/backup/test/asdasdas.gz – user2323684

+0

Я также пробовал этот: echo '- Обновление папки клиента -' smbclient -U $ user% $ pwd // $ targetIP/$ sharedDirRoot -c "cd $ targetDir; lcd $ linuxSourceDir; prompt off; recurse; mput *;» echo '- Удаленный клиент обновлен -' , но mput берет все или ничего, пытался с mput * .gz f.ex – user2323684

Смежные вопросы