zoukankan      html  css  js  c++  java
  • 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的烦恼了,是不是很棒^_^

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

  • 相关阅读:
    CSU 1333 Funny Car Racing
    FZU 2195 检查站点
    FZU 2193 So Hard
    ZOJ 1655 FZU 1125 Transport Goods
    zoj 2750 Idiomatic Phrases Game
    hdu 1874 畅通工程续
    hdu 2489 Minimal Ratio Tree
    hdu 3398 String
    洛谷 P2158 [SDOI2008]仪仗队 解题报告
    POJ 1958 Strange Towers of Hanoi 解题报告
  • 原文地址:https://www.cnblogs.com/01-single/p/6868015.html
Copyright © 2011-2022 走看看