これはSFTPファイル転送。
次のように進んでください。
- 拡張子があるファイルを確認し、
.csv
ローカルディレクトリに配置します。 - 次に、リモート接続の別のフォルダに移動します。
コマンドを試しましたが、rename
エラーが発生しました。「失敗する」
sftpのバッチファイルオプションを試しましたが、コマンドがファイルセットではなく特定のファイル名を期待しているよう-b
です。rename
ではどうすればいいですか?
答え1
私に役立つので、問題に関する追加情報を提供する必要があります。
chris@localhost$ finger 2> file.txt
chris@localhost$ sftp remotehost
Connected to remotehost.
sftp> ls -l file.txt
Can't ls: "/home/chris/file.txt" not found
sftp> ls -l file.tmp
Can't ls: "/home/chris/file.tmp" not found
# So the file doesn't exist on the remote in either form
sftp> put file.txt file.tmp
Uploading file.txt to /home/chris/file.tmp
file.txt 100% 501 0.5KB/s 00:01
sftp> ls -l file.txt
Can't ls: "/home/chris/file.txt" not found
sftp> ls -l file.tmp
-rw-r-xr-- 0 1001 1001 501 Aug 12 16:35 file.tmp
# It has arrived as file.tmp
sftp> rename file.tmp file.txt
sftp> ls -l file.txt
-rw-r-xr-- 0 1001 1001 501 Aug 12 16:35 file.txt
sftp> ls -l file.tmp
Can't ls: "/home/chris/file.tmp" not found
# And been successfully renamed
答え2
明らかにrename
sftpのコマンドはいいえソースとターゲットが異なるファイルシステムにあるときに機能します。
RedHat6、SLES9などでこれらの動作を見たことがあります。
答え3
これはOPが望んでいたものとまったく一致しないかもしれませんが、!command
「SFTPセッション内でファイル名を変更する」にsftpが役に立つと思います。
- SFTP ヘルプで: "!command - ローカルシェルで 'command' を実行する"
SFTPセッションでの使用法は次のとおりです。 (ローカル:macOS Catalina、リモート:Ubuntu 16.04.6 LTS)
sftp> lls
blankFileForVSCODEbrowser.txt counties
sftp> !command mv blankFileForVSCODEbrowser.txt blankFileForVSCODEbrowserRenameTest.txt
sftp> lls
blankFileForVSCODEbrowserRenameTest.txt counties
答え4
Bashシェルで次のことを試すことができます(1行に減らすこともできます)。
リモートsftp $server / $dirのすべてのcsvファイル名をtxtに変更します(パスワードアクセスがないと仮定)。
for f in `echo 'ls *.csv' | sftp -qp $user@$server:$dir | grep -v ^sftp`; do
echo "rename '$f' '${f%.csv}.txt'" | sftp -qp $user@$server:$dir ;
done
または
# to move to $newpath folder:
for f in `echo 'ls *.csv' | sftp -qp $user@$server:$dir | grep -v ^sftp`; do
echo "rename $f $newpath/${f##*/}" | sftp -qp $user@$server:$dir ;
done
どこ
echo 'ls *.csv' | sftp $server:$dir
- $dirディレクトリのリモートSFTPでlsを実行します。${f%.csv}.txt
- 変数$ fのcsvをtxtに置き換える${f##*/}
- ファイルパス$ fからパスを削除する(もしあれば)
PS対話型パスワード入力を有効にする必要がある場合は、パラメータを追加してみ-o "BatchMode=no"
てください。sftp