在我们的 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* username@serverip:/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
最佳答案
对于第一点,尝试extended globbing : (未经测试)
# This could go in your ~/.bashrc
shopt -s extglob
scp /myfolder/archive.2012-04-@(09|1[0-2])/my_transaction* username@serverip:/tmp
对于第二点,我不认为你可以同时对所有文件进行 scp 和重命名。不过,您可以循环完成所有这些操作。例如。 (也未经测试)
for file in /myfolder/archive.2012-04-@(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 username@serverip:/tmp
done
关于sftp - 复制时重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10226017/