Chinaunix
标题:
请教这个shell 脚本咋写
[打印本页]
作者:
kakaliu
时间:
2014-11-06 14:09
标题:
请教这个shell 脚本咋写
本帖最后由 kakaliu 于 2014-11-06 14:16 编辑
#!/bin/bash
listfile=`ls *.sql.gz | awk -F"_" '{print $1}'`
#bakdate=`ls | awk -F"_" '{print $3}'`
yesterday=`date -d '-1 days' +%Y%m%d`
localdir="/home/Administrator/test"
for i in $listfile
do
mkdir -p $i/$yesterday
done
复制代码
我现在localdir目录有如下文件 是从远处FTP下载下来的
文件名如下
gold_20141105.sql.gz
hp_20141105.sql.gz等等文件
现在要求把以.sql.gz结尾的文件 转移到对应的目录下
/home/Administrator/test/gold/20141105/gold_20141105.sql.gz
/home/Administrator/test/hp/20141105/hp_20141105.sql.gz
作者:
Linux_manne
时间:
2014-11-06 14:18
类似这样的
for i in `ls *.sql.gz`
do
dirs=${i%%_*}
tmps=${i##*_}
dates=${tmps%%.*}
cp $i $localdir/${dirs}/${dates}/$i
done
复制代码
没测试过
作者:
qq58945591
时间:
2014-11-06 14:49
Linux_manne 发表于 2014-11-06 14:18
类似这样的没测试过
再加点判断,目标目录不存在则先创建,不然cp就失败了。
作者:
银风冷月
时间:
2014-11-06 15:01
remote_dir=/home/Administrator/test/
for i in `ls localdir`;do
newdir=${remote_dir}$(echo $i|sed -r 's/([^_]+)_([^.]+).sql.gz/\1\/\2/')
if [ -d $newdir ];then
mv $i $newdir
else
mkdir -p $newdir
mv $i $newdir
fi
done
复制代码
作者:
银风冷月
时间:
2014-11-06 15:02
#!/usr/bin/env python2.7
#-*- coding:utf8 -*-
import os,re
sep = os.sep
local_dir = '/opt/localdir'
remote_dir = '/home/Administrator/test'
files = os.listdir(local_dir)
filecount = len(files)
for i in xrange(filecount):
if 'sql.gz' in files[i]:
dir1 = re.search('([^_]+)_([^.]+).sql.gz',files[i]).group(1)
dir2 = re.search('([^_]+)_([^.]+).sql.gz',files[i]).group(2)
if not os.path.isdir('%s%s%s%s%s'%(remote_dir,sep,dir1,sep,dir2)):
os.makedirs('%s%s%s%s%s'%(remote_dir,sep,dir1,sep,dir2))
os.popen('mv %s %s%s%s%s%s'%(files[i],remote_dir,sep,dir1,sep,dir2)).read()
else:
os.popen('mv %s %s%s%s%s%s'%(files[i],remote_dir,sep,dir1,sep,dir2)).read()
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2