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的烦恼了,是不是很棒^_^

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

  • 相关阅读:
    docker启动centos容器后如何用putty连接
    Nginx——静态资源服务器(一)
    在win10 docker启动的centos容器中安装nginx
    Spring简单实现数据源的动态切换
    fastjson将json字符串中时间戳转化为日期
    springmvc的异常统一处理
    检查性异常和非检查性异常的区别
    前端其他目录
    JavaScript目录
    React目录
  • 原文地址:https://www.cnblogs.com/01-single/p/6868015.html
Copyright © 2011-2022 走看看