Ich muss alle Dateien von current_path nach current_path / DestinationFolder verschieben .
Die Version von SFTP, die ich verwende, ist: SFTP-Protokoll Version 2
Die verfügbaren Befehle sind:
sftp> help
Available commands:
cd path Change remote directory to 'path'
lcd path Change local directory to 'path'
chgrp grp path Change group of file 'path' to 'grp'
chmod mode path Change permissions of file 'path' to 'mode'
chown own path Change owner of file 'path' to 'own'
help Display this help text
get remote-path [local-path] Download file
lls [ls-options [path]] Display local directory listing
ln oldpath newpath Symlink remote file
lmkdir path Create local directory
lpwd Print local working directory
ls [path] Display remote directory listing
lumask umask Set local umask to 'umask'
mkdir path Create remote directory
put local-path [remote-path] Upload file
pwd Display remote working directory
exit Quit sftp
quit Quit sftp
rename oldpath newpath Rename remote file
rmdir path Remove remote directory
rm path Delete remote file
symlink oldpath newpath Symlink remote file
version Show SFTP version
!command Execute 'command' in local shell
! Escape to local shell
? Synonym for help
Ich habe keinen Befehl mv . Ich habe RNFT ausprobiert und nicht funktioniert.
Jetzt kann ich umbenennen:
rename current_path/myFile.txt current_path/DestinationFolder/myFile.txt
und es ist OK. Aber ich muss alle (oder viele ) Dateien verschieben. Folgendes hat nicht funktioniert:
rename current_path/* current_path/DestinationFolder/
Couldn't rename file "current_path/*" to "current_path/DestinationFolder/": Bad message
Ich habe keinen Zugriff über SSH, daher kann ich keine Aktionen wie echo "ssh login @ server mv * current_path / DestinationFolder /" ausführen.
Ich sollte mich nicht mit diesem Server anlegen: Keine Skripte, keine Aktivitäten usw. Ich bin sehr eingeschränkt.
Könnten Sie mir bitte einen Weg empfehlen, dies zu lösen ?
HINWEIS : Dies ist in SOLARIS.
sftp> !bash
odersftp> !
odersftp> !id
? So etwas funktioniert?Antworten:
Ich stimme CJC zu. Wenn Sie wirklich auf den obigen Befehl beschränkt sind, mit dem Sie Dateien herunterladen können, geben Sie den lokalen Pfad [Remote-Pfad] ein und scp ihn zurück. Guter Link auch hier .
Ich würde so etwas wie Winscp verwenden , was die Sache viel einfacher macht.
quelle
OpenSSH
sftp
ist kein sehr leistungsfähiger Client für solche Aufgaben. Sie müssten es zweimal ausführen. Um zuerst eine Liste von Dateien zu sammeln, verwenden Sie die Liste, um eine Liste von Befehlen zu generieren, und führen Sie diese in einem zweiten Lauf aus.Etwas wie das:
Bevor Sie das Skript für Produktionsdateien ausführen, geben Sie zunächst die generierte Befehlsliste in eine Datei aus, um zu überprüfen, ob die Ergebnisse den Erwartungen entsprechen.
Ersetzen Sie einfach die letzte Zeile durch:
quelle
sed -E "s/.*sftp> ls (\w|\/)*//"
da sich das zuls
bearbeitende Verzeichnis auch in der Ausgabe befindet.