您的位置:首页 > 运维架构 > Shell

shell 实战拷贝不特定文件到不特定目录

2013-12-02 19:54 225 查看
群里的朋友问了一个工作中实际遇到的问题。他有两个列表文件,一个存的是文件,一个存的是目录,要将文件列表里的文件拷贝到目录列表中的目录中。两个文件行数相同,一一对应。

文件a(文件列表)的内容如下:
/data/discuz/201310/12/4.txt
/data/discuz/201311/11/3.txt
/data/discuz/image/5.txt
文件b(目录列表)的内容如下:
/data/www/241/241discuz/201310/12
/data/www/241/241discuz/201311/11
/data/www/241/241discuz/image
实现这个功能很简单,遍历目录列表,如果这个目录不存在,就创建,将a中的对应行取出。判断文件是否存在,如果存在拷贝过去,如果不存在,输出到错误日志。闲言少叙,上代码:

#!/bin/bash
#create by Chenchao Gao
#function: cp file in a to dir in b
#date: 2013/12/02
num=0
LOGFILE="/tmp/faild_log.txt"
for line in `cat 2.txt`
do
if [ ! -d $line ];then
mkdir -p $line
fi
((num=num+1))
fileName=`sed -n ${num}p 1.txt`
if [ -e $fileName ];then
cp $fileName $line
else
echo "$fileName is not exist,copy to $line faild" >>$LOGFILE
fi
done
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息