#!/bin/bash
rp=$(pwd)
echo rootpath-----------------:${rp}
# function
moveFile(){
# get dirs
ls -F | grep "/$" > temp_dirs.txt
cat temp_dirs.txt | while read d
#for d in $(cat temp_dirs.txt);
#while read d
do
cp=$(pwd)/${d}
cd ${cp}
echo currentPath----------------------:${cp}
ls -al | grep "^-" > temp_files.txt
cat temp_files.txt | while read f
#for f in $(cat temp_files.txt);
#while read f
do
fileName="${f##* }"
echo filename--------------------:${fileName}
newFileName=${rp}/${d%*/}-${fileName}
echo newfilename---------------------:${newFileName}
fullPath=${cp}${fileName}
echo fullPath-------------------------:${fullPath}
mv ${fullPath} ${newFileName}
done
#< <(ls -al | grep "^-")
# delete temp file
test -a temp_files.txt && rm -rf temp_files.txt
#
moveFile
test -a temp_dirs.txt && rm -rf temp_dirs.txt
cd ..
done
# < <(ls -F | grep "/$")
}
# exec
echo 'start move files ...'
moveFile
rm -rf *temp_dirs.txt
rm -rf *temp_files.txt
echo 'move files end'
技术有限,此代码效率不高;在linux测试没问题,mac上没测,你可以先测一下;文件移到根目录会被重命名为它原先所在的文件夹加上短杠加上它原先的名称