Skip to content

Instantly share code, notes, and snippets.

@shenxgan
Created September 13, 2017 01:33
Show Gist options
  • Select an option

  • Save shenxgan/06ede52ff8cd1bf928ac8b50b3e4e9c9 to your computer and use it in GitHub Desktop.

Select an option

Save shenxgan/06ede52ff8cd1bf928ac8b50b3e4e9c9 to your computer and use it in GitHub Desktop.
批量移动目录并建立软链接
#!/bin/bash
# 此脚本用来移动clean数据并建立软链接
export LANG="en_US.UTF-8"
# 路径
src="/data1"
dst="/data2"
function usage() {
cat << EOF
Usage: $0 begin end [real]
begin, end 参数是日期字符串格式,示例:2015-10-01
real 有此参数即进行实际的mv,否则仅打印mv信息
Example: $0 2015-10-01 2015-12-12
EOF
exit 0
}
[ $# -ne 2 -a $# -ne 3 ] && usage
begin=$1
end=$2
[ $# -eq 3 ] && run=$3
if [[ "$begin" > "$end" ]]; then
echo "开始日期大于结束日期!"
exit -1
fi
if [ ! -d $src/$begin ]; then
echo "不存在 $src/$begin 目录!"
exit -2
fi
if [ ! -d $src/$end ]; then
echo "不存在 $src/$end 目录!"
exit -3
fi
[ ! -d $dst ] && mkdir -p $dst
while true; do
if [ "$run" = "real" ]; then
echo "[real] mv ${src}/$begin ${dst}"
mv ${src}/$begin ${dst}
echo "[real] ln -s ${dst}/$begin ${src}/$begin"
ln -s ${dst}/$begin ${src}/$begin
else
echo "[test] mv ${src}/$begin ${dst}"
echo "[test] ln -s ${dst}/$begin ${src}/$begin"
fi
[ "$begin" = "$end" ] && break
begin="`date -d \"$begin 1 days\" +%Y-%m-%d`"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment