日期:2014-05-16  浏览次数:20804 次

从指定文件夹筛选出部分文件拷贝到另外一个文件夹
本帖最后由 zhaoyun0209 于 2014-04-29 15:02:38 编辑
假设指定的文件夹路径为:/home/picktest/source
目标文件夹路径为:/home/picktest/result
文件格式大致如下。
242787.ted.20140418.pfk.12389.txt
123989.ted.20140417.pfk.23425.txt
576897.ted.20140414.pfk.42521.txt
175987.ted.20140421.pfk.56652.txt
.ted 之前和.pfk之后的都是随机部分,在他们中间的是日期,我希望找出在某个日期段内所有txt文件,
然后拷贝到目标文件夹里面。
比如说输入起始时间20140416,结束时间20140420 则结果应该是把:
242787.ted.20140418.pfk.12389.txt
123989.ted.20140417.pfk.23425.txt
这两个文件拷贝到 result文件夹里面
因为本人真心不会shell编程,但是给了一个这样的任务,我突击学习了下,虽然对于一些语法啥的有一点了解,awk还有sed也都看了下,有些地方理解起来很困难,所以还是写不出来,特来此求助下。
先谢谢了。
------解决方案--------------------
应该是某个时间段内修改过得文件吧,find命令
------解决方案--------------------
#!/bin/sh
t1="20140418"
t2="20140414"

find  .  -name "*.txt" 
------解决方案--------------------

while read LINE
do
       t=${LINE#*ted.}
       t=${t%.pfk*}
       if (( $t2 < $t && $t < $t1)) ; then
           echo $LINE
       fi
done


这就是你想要的文件名,自己把find的路径、输入参数弄下 就ok了



------解决方案--------------------
#!/bin/sh

t1="20140417"
t2="20140418"
echo "in [${t1},${t2}]:"
src_dir="/home/picktest/source"
dst_dir="/home/picktest/result"
files=`ls ${src_dir}`
echo ${files}
for file in ${files}
do
t=${file#*.}
  t=${t#*.}
t=${t%%.*}
if [ "${t1}" -le "${t}" ] && [ "${t}" -le "${t2}" ] ; then
  echo ${file}
cp ${src_dir}"/"${file} ${dst_dir}
fi
done