shell实现文件名相同路径不同的批量复制

本文介绍了一段Shell脚本,用于在不同路径下查找具有相同文件名的文件,并将它们复制到指定的目标目录下。脚本通过先创建目标目录,然后遍历所有具有相同文件名的文件,确定其路径并复制到相应子目录中。

 如果系统存在文件名相同,但路径不同的文件,如果单纯用find来批量复制到一个地方的话会被覆盖掉,下面的脚本是实现根据文件名的路径来进行存放复制。为能更好的测试,脚本中加了在不同路径创建相同文件名的程序。

  1. #!/bin/sh 
  2.  
  3. . /etc/profile 
  4.  
  5. # define 
  6. tf=testfile 
  7. destpath=/root/found 
  8. [ ! -d $destpath ] && mkdir -p $destpath 
  9.  
  10. # touch some the same file for test 
  11. TouchFile() 
  12. {  
  13.  echo "/tmp" > /tmp/$tf 
  14.  echo "/home" > /home/$tf 
  15.  echo "/root" > /root/$tf 
  16.  echo "/var/tmp" > /var/tmp/$tf 
  17.  
  18.  
  19. # find the file and copy to the dest dir 
  20. FindCopy() 
  21.  TouchFile 
  22.  if [ $? -eq 0 ];then 
  23.     for i in $(find / -name $tf);do 
  24.         [ ! -d $destpath/$(dirname $i) ] && mkdir -p $destpath$(dirname $i) 
  25.         cp -rf $i $destpath$(dirname $i)  
  26.         #echo $i 
  27.     done 
  28.  else 
  29.     echo "please touch some test file first..." 
  30.  fi 
  31. FindCopy 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值