前不久有一個需求,一個文件夾下有很多文件,文件名用.號分割,需要編寫一個shell腳本,把文件組織成樹型文件夾的結構。
組織前:
組織后:
查了不少資料終於完成,代碼如下:
#!/bin/sh #創建目錄 function CreateDir { _path="$2$1" if [ ! -d $_path ] then mkdir -p $_path fi } #文件拷貝 function MoveFile { mv $1 $2 } #主函數:根據文件名自動創建目錄結構 function main {
#這里是待處理的文件夾路徑 home="markdown" for file in `ls $home/` do # 根據文件名創建文件夾並移動文件 dotNum=`echo $file|grep -o "\."|wc -l` extension="" fileName="" path="" if [ $dotNum -eq 0 ] then extension="" fileName=$file path="" elif [ $dotNum -eq 1 ] then extension=${file##*.} fileName=${file%.*} path="" else extension=${file##*.} wholeName=${file%.*} fileName=${wholeName##*.} path=${wholeName%.*} fi path="${path//.//}" # echo "路徑=$path 文件名=$fileName 后綴名=${extension}" CreateDir $path "$home/" if [ -n "$path" ] then MoveFile "$home/$file" "$home/$path/$fileName.$extension" fi done } #調用入口 main $*
保存為xxx.sh文件,在命令行里敲sh xxx.sh就行了。