如果系統存在文件名相同,但路徑不同的文件,如果單純用find來批量復制到一個地方的話會被覆蓋掉,下面的腳本是實現根據文件名的路徑來進行存放復制。為能更好的測試,腳本中加了在不同路徑創建相同文件名的程序。
- #!/bin/sh
- . /etc/profile
- # define
- tf=testfile
- destpath=/root/found
- [ ! -d $destpath ] && mkdir -p $destpath
- # touch some the same file for test
- TouchFile()
- {
- echo "/tmp" > /tmp/$tf
- echo "/home" > /home/$tf
- echo "/root" > /root/$tf
- echo "/var/tmp" > /var/tmp/$tf
- }
- # find the file and copy to the dest dir
- FindCopy()
- {
- TouchFile
- if [ $? -eq 0 ];then
- for i in $(find / -name $tf);do
- [ ! -d $destpath/$(dirname $i) ] && mkdir -p $destpath$(dirname $i)
- cp -rf $i $destpath$(dirname $i)
- #echo $i
- done
- else
- echo "please touch some test file first..."
- fi
- }
- FindCopy