请教

回复 收藏
/tmp目录下有file1~file1000个目录,我想把/tmp目录下的file1~file500拷贝到/bak目录下,并且以fileX.日期命名。脚本我写了,但是为什么1000个目录都拷贝过去了呢?另外再问一下,如果我只想把file2\file4,偶数结尾的文件拷贝呢?命名格式还是一样,这个又怎么写?
#!/bin/bash
d=`date +%Y%m%d`
cd /tmp
for i in `seq 1 500`;
do
cp /tmp/file$i /bak/file$i.$d
done
2011-08-18 20:25 举报
已邀请:
0

split_two

赞同来自:

我试了一下,在do后面加上这个语句“ls /tmp/file$i > /dev/null 2>&1“就可以了拷贝file1~file500文件了,但是我不理解不加上这句为什么就不可以了?
0

阿铭 管理员

赞同来自:

首先需要确认一个问题,就是你创建的1000个文件,是普通文件还是目录?
如果是目录的话,用cp是需要加 -r 的,如果是普通文件的话,你的脚本是没有任何问题的,我已经做过试验。如果是目录的话,加上-r选项也没有任何问题。
0

阿铭 管理员

赞同来自:

拷贝偶数结尾的文件,只需要小小改造一下即可:
  1. #!/bin/bash
  2. d=`date +%Y%m%d`
  3. cd /tmp    // 这一行可以不要的
  4. for i in `seq 2 2 1000`;
  5. do
  6. cp /tmp/file$i /bak/file$i.$d
  7. done
0

split_two

赞同来自:

是1000个文件,不好意思了~~~
看到seq x x x还能这么用?汗颜了!!!

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: