2012-04-19 152 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 

我希望这对你也有帮助。 对我来说工作得很好。

相关问题