将不同文件夹下相同文件名的文件移动到一个文件夹下

#!/bin/bash
######函数roll_di生成随机数
function roll_die() {
  # capture parameter
  declare -i DIE_SIDES=$1
  # check for die sides
  if [ ! $DIE_SIDES -gt 0 ]; then
    # default to 6
    DIE_SIDES=6
  fi
  # echo to screen

  echo $[ ( $RANDOM % $DIE_SIDES )  + 1 ]



}

#也可以定义一个变量

#set i=0;

#i=$(date+%s+%N);

#用i 来代替下面的roll_die 10000

#当然如果用RANDOM 代替也是可以的

#可能有人会说,如果为什么要有生成随机数的代码,完全可以用${dir}来代替${roll_die 10000}。由于在我的系统中,所要寻找的文件对应的上级目录是相同的,所以就不能用#用文件名后加上级目录的方法更改文件名了,如果那样的话,生成的文件名又会相同。

######

mkdir /data2/candetail     #创建存放文件的目录
targDir=/data2/candetail  #文件名修改之后存放的位置
cd /data2/canfile              #cd到存放源文件的目录
find . -type d | 
 while IFS="" read -r dir ; do
   if [[ -f "${dir}"/candatail-file.csv ]] ; then
     echo mv -i "${dir}/candatail-file.csv" "${targDir}/candatail-file.csv$(roll_die 10000)"
    mv -i "${dir}/candatail-file.csv" "${targDir}/candatail-file.csv$(roll_die 10000)"

   fi

done



参考:1. http://unix.stackexchange.com/questions/11697/how-copy-and-rename-files-found-in-find-function-linux  

             2.http://islandlinux.org/howto/generate-random-numbers-bash-scripting




版权声明:本文为haikuotiankong1997原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。