如何在 sftp 中循環資料夾中的檔案並重新命名副檔名

如何在 sftp 中循環資料夾中的檔案並重新命名副檔名

有人可以告訴我如何重命名 sftp 資料夾內的所有檔案副檔名嗎?

例如,我在 sftp 中有一個資料夾“Test”,該資料夾內有幾個文件,例如,,test1.tmp...... test2.tmp,我想將所有擴展名為“tmp”的文件重命名為.csv 。所以重命名後的結果應該是這樣的。test1.csvtest2.csv……但是在sftp中並不是所有的bash指令都能執行。

我已經這樣嘗試了

find . -name "*.tmp" -exec rename 's/\.tmp$/.csv/' '{}' \;

但它說命令無效,似乎命令在 sftp 中不起作用。

答案1

有一個rename SFTP指令也。如果您使用的是 Windows 並使用 WinSCP,那麼您很幸運可以使用通配符並只需運行rename *.tmp *.csv.

c:\WinSCP>WinSCP.com
winscp> open sftp://[email protected]:22/ -privatekey=bcs78.key.ppk
Searching for host...
Connecting to host...
Authenticating...
Using username "bcs78".
Authenticating with public key "bcs78@laptop".
Authenticated.
Starting the session...
Session started.
Active session: [1] [email protected]
winscp> ls
-rw-rw-r--   1 bcs78    bcs78            2 Aug 30 12:23:34 2018 03.tmp
drwxr-xr-x  14 bcs78    bcs78         4096 Aug 30 12:21:49 2018 ..
-rw-rw-r--   1 bcs78    bcs78            2 Aug 30 12:23:11 2018 01.tmp
drwxrwxr-x   2 bcs78    bcs78         4096 Aug 30 12:23:34 2018 .
-rw-rw-r--   1 bcs78    bcs78            2 Aug 30 12:23:23 2018 02.tmp
winscp> rename *.tmp *.csv
03.tmp
01.tmp
02.tmp
winscp> ls
-rw-rw-r--   1 bcs78    bcs78            2 Aug 30 12:23:23 2018 02.csv
drwxr-xr-x  14 bcs78    bcs78         4096 Aug 30 12:21:49 2018 ..
-rw-rw-r--   1 bcs78    bcs78            2 Aug 30 12:23:34 2018 03.csv
drwxrwxr-x   2 bcs78    bcs78         4096 Aug 30 12:23:54 2018 .
-rw-rw-r--   1 bcs78    bcs78            2 Aug 30 12:23:11 2018 01.csv
winscp>

在 Linux 中,您可能需要編寫腳本,因為 Openssh 或 Putty 實作不支援通配符。

相關內容