歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

shell實現文件名相同路徑不同的批量復制

如果系統存在文件名相同,但路徑不同的文件,如果單純用find來批量復制到一個地方的話會被覆蓋掉,下面的腳本是實現根據文件名的路徑來進行存放復制。為能更好的測試,腳本中加了在不同路徑創建相同文件名的程序。

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