• cp复制文件到多个目录下及强制覆盖


      工作中有遇到要把一个文件拷贝到N个文件夹下,但是cp又没有这样的命令,怎么办,这时需要编写一个脚本,首先做实验如下:

    [root@host1 ~]# mkdir test
    [root@host1 ~]# cd test
    [root@host1 test]# mkdir -p test_123 test_abc test_xyz testlog
    [root@host1 test]# cd testlog/
    [root@host1 testlog]# echo "Test log" > test.log
    [root@host1 testlog]# cat cp.sh 
    #!/bin/bash
    log=test.log
    for dir in `find /root/test -name "test_*"`
    do
    cp $log $dir
    done
    [root@host1 testlog]# bash -x cp.sh 
    + log=test.log
    ++ find /root/test -name 'test_*'
    + for dir in '`find /root/test -name "test_*"`'
    + cp test.log /root/test/test_xyz
    + for dir in '`find /root/test -name "test_*"`'
    + cp test.log /root/test/test_abc
    + for dir in '`find /root/test -name "test_*"`'
    + cp test.log /root/test/test_123
    [root@host1 testlog]# cat /root/test/test_123/test.log 
    Test log
    

      使用脚本写的命令,是可以强制覆盖原先有的文件的,而没有提示,我们验证下:

    [root@host1 testlog]# echo "Test log once" > test.log
    [root@host1 testlog]# bash  cp.sh
    [root@host1 testlog]# cat /root/test/test_123/test.log 
    Test log once
    

      但是如果我们在命令行使用cp命令,则会提示是否需要覆盖:

    [root@host1 testlog]# cp test.log /root/test/test_123/
    cp:是否覆盖"/root/test/test_123/test.log"? y
    

      解决这个问题的方法很简单,只需在前面加上"":

    [root@host1 testlog]# echo "Test log once again" > test.log
    [root@host1 testlog]# cp test.log /root/test/test_123/
    [root@host1 testlog]#
    [root@host1 testlog]# cat /root/test/test_123/test.log 
    Test log once again
    

      这样就可以解决每次覆盖敲y的烦恼了,是不是很棒^_^

      当然还可以取消别名或者修改别名,但是比较麻烦,用完之后还要恢复回来,如果忘记修改回来,对以后的工作可能会造成麻烦哦!

  • 相关阅读:
    实验4 IIC通讯与EEPROM接口
    实验3 串口通信
    实验2 中断和定时计数器实验
    实验1 单片机IO口应用及数码管显示
    央行大小额支付系统
    银行各交易渠道的清算方式
    ATM跨行取款的清算方式
    POS机刷卡跨行交易的清算方式
    商业银行在CNAPS体系中对各种交易的处理
    支付相关名词解释
  • 原文地址:https://www.cnblogs.com/01-single/p/6868015.html
Copyright © 2020-2023  润新知