2012-04-19 74 views
-1

在我們的Unix服務器中,「MyFolder文件」包含按日期重命名文件,同時複製

archive.2012-04-10 
archive.2012-04-11 

每個歸檔文件夾包含像下面

my_transaction.log-20120410.gz 

我知道一個壓縮文件附加許多存檔文件夾在一個命令下面將複製my_transaction.log-20120410.gz,my_transaction.log-20120411.gz和my_transaction.log-20120412.gz並將其放在'serverip'服務器下的/ tmp文件夾下。

scp /myfolder/archive.2012-04-1[0-2]/my_transaction* [email protected]:/tmp 

我的問題有兩個部分

1)什麼是如果我想與上述一起復制my_transaction.log-20120409.gz以及上述一行命令?

2)什麼命令將複製和重命名/ tmp文件夾下複製的文件。這是它應該被複制如下在/ tmp下。我想在複製到'serverip'/ tmp文件夾時添加一個帶有交易的_1。

my_transaction_1.log-20120409.gz 
my_transaction_1.log-20120410.gz 
my_transaction_1.log-20120411.gz 
my_transaction_1.log-20120412.gz 
+0

Stack Overflow是編程和開發問題的網站。這個問題似乎與題目無關,因爲它不涉及編程或開發。請參閱幫助中心的[我可以詢問哪些主題](http://stackoverflow.com/help/on-topic)。也許[超級用戶](http://superuser.com/)或[Unix&Linux堆棧交換](http://unix.stackexchange.com/)會是一個更好的地方。另請參閱[我在哪裏發佈關於Dev Ops的問題?](http://meta.stackexchange.com/q/134306) – jww 2017-04-24 09:02:46

回答

2

對於第一點,嘗試extended globbing:(未經測試)

# This could go in your ~/.bashrc 
shopt -s extglob 
scp /myfolder/[email protected](09|1[0-2])/my_transaction* [email protected]:/tmp 

對於第二點,我不認爲你既可以scp和一次性重命名的所有文件。儘管如此,你可以在循環中完成它們。例如。 (還未經測試)

for file in /myfolder/[email protected](09|1[0-2])/my_transaction*; do 
    newfile=$(echo $file | sed -e "s/my_transaction/my_transaction_1/") 
    # Take out the "echo" if the command looks OK 
    echo scp $newfile [email protected]:/tmp 
done 
+0

進行重命名和複製可以使用sftp嗎?我不是專門尋找scp。 – Suresh 2012-04-19 11:19:45

+0

我認爲這不會有什麼區別。 – 2012-04-19 11:50:15

0

我確實發現了同樣的問題,一個解決方案,請訪問:

scp -v localhost:/home/myuser/test/arquivo* . 2>&1| grep -i modes|awk '{print $6}' 

這將獲得由SCP轉移的文件名,因爲你必須每個名字,你可以使用awk在每個文件後用或多或少的方式重命名:

scp -v localhost:/home/myuser/test/arquivo* . 2>&1| grep -i modes|awk '{print "mv "$6" "$6".renamed"}'|sh -x 

我希望這對你也有幫助。 對我來說工作得很好。

相關問題