1. 程式人生 > >SHELL指令碼 移動mv指定目錄中的所有檔案到其他目錄

SHELL指令碼 移動mv指定目錄中的所有檔案到其他目錄

遞迴寫的,不太好看,反正能用,多擔待

#!/bin/bash

function func {
for name in $1*
do
if [ -d "$name" ]
then 
#	echo "$name is a d"
	func $name/ $2 $p
elif [ -f "$name" ]
then 
	echo "$name is a file"
	c=$2${1#*$p}
	if [ -d "$c" ]
	then
		mv $name $c
	else
		mkdir -p $c
		mv $name $c
	fi
fi
done
}

p=$1
#echo "$1 $2 $p"
func $1 $2 $p

存成movefile.sh,修改許可權

chmod 755 movefile.sh

然後執行,帶上變數 ,第一個變數是from的絕對路徑,第二個是to的絕對路徑。比如:

./movefile.sh /nfs/upload/ /nfs_bak/upload/

指令碼可以把/nfs/upload/下所有年_月/日期/下的檔案mv到指定的/nfs_bak/upload/下,不存在的路徑會自動生成後再mv