剪切文件至上级目录,若重复则自动改名   ERIKXUE (薛忠权)

#===================================================================

# 本文档为满足客户数据恢复而编写,感谢陈维绪大师,ERIKXUE膜拜中.  # 

#===================================================================

# 方法一

#!/bin/bash

a=$(find . -type f | grep -v $0)

    # 查找当前目录下所有普通文件,并排除脚本自身

for i in $a

do

    mv -b -S _$(date +%N) $i ${i%/*/*}/

    # 移动至上级目录,如文件存在,则添加文件名后缀随机数

done


#===================================================================


# 方法二

#!/bin/bash

a=$(find . -type f | grep '/data/')

    # 查找当前目录下所有普通文件,只过滤路径中包含 data 的文件

for i in $a

do

    mv -b -S _$(date +%N) $i ${i%/*/*}/

done

#===================================================================


# 方法三

#!/bin/bash

a=$(find . -type f | grep -v $0)

# a=$(find . -type f | grep '/date/')


for i in $a

do

    file_name=$(basename "$i")

        # 获取文件名称,注意 $i 需要引号,以针对文件名或路径中包含空格和特殊字符的情况;

    [ -e ${i%/*/*}/$file_name ] && b=$(date +%N_)

        # 判断该文件在上级目录中是否存在,存在则定义随机数变量 b

    mv $i ${i%/*/*}/$b$file_name

        # 移动文件至上级目录,如b有值,则将b值做为文件名前缀

done

#===================================================================


# 方法三测试内容


#!/bin/bash

a=$(find . -type f | grep -v $0)

for i in $a

do

    file_name=$(basename $i)

    dir_name="$(dirname $i)/"


    [ -e ${i%/*/*}/$file_name ] || b=$(date +%N_)

#    mv $i ${i%/*/*}/$b$file_name

    echo $i

    echo $file_name

    echo $dir_name

    echo ${i%/*/*}/$b$file_name

    echo "==================="

done

#===================================================================


本文出自 “奋斗在京(ErikXUE)” 博客,谢绝转载!

你可能感兴趣的:(薛忠权,erikxue)