#===================================================================
# 本文档为满足客户数据恢复而编写,感谢陈维绪大师,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
#===================================================================