免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3822 | 回复: 10
打印 上一主题 下一主题

初学请教关于复制重命名文件的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-02 22:42 |只看该作者 |倒序浏览
  我刚刚学SHELL,还不熟练,所以想请教一下大家这个应该怎么做:
  复制A目录中.txt类型的文件到新的目录B中,且重新命名为原名称加上日期的.txt 比如在A中有F.txt文件,复制到B后成了F20120302.txt
  A目录里面有很多个.txt和其他文件其他文件里面也可能存在.txt类型的,但是不想复制这些子目录下的.txt,只需当前目录A下的.txt即可.请问这个SHELL应该怎么写好呢?

论坛徽章:
0
2 [报告]
发表于 2012-03-02 22:59 |只看该作者
求指教

论坛徽章:
0
3 [报告]
发表于 2012-03-02 23:09 |只看该作者
  1. ls -1 A/*.txt|sed -r "s/(.+).txt/mv & B/\1$(date +%Y%m%d).txt/" |sh
复制代码

论坛徽章:
71
15-16赛季CBA联赛之同曦
日期:2018-08-23 15:41:42辰龙
日期:2014-08-15 09:07:43狮子座
日期:2014-06-03 13:55:33亥猪
日期:2014-06-02 11:17:08巨蟹座
日期:2014-05-06 10:02:03午马
日期:2014-05-04 08:18:27亥猪
日期:2014-04-29 11:11:32技术图书徽章
日期:2014-04-24 15:51:26技术图书徽章
日期:2014-04-17 11:01:53辰龙
日期:2014-04-15 12:45:46亥猪
日期:2014-04-11 09:06:23射手座
日期:2014-04-01 15:28:10
4 [报告]
发表于 2012-03-02 23:21 |只看该作者
本帖最后由 zhaopingzi 于 2012-03-02 23:28 编辑

  1. #!/bin/bash
  2. newdate=`date +%F|sed 's/-//g'`
  3. for txtfile in `ls *.txt`
  4. do
  5. newfile=`echo $txtfile|sed 's/.txt//g'`$newdate.txt
  6. cp $txtfile ./B/$newfile
  7. done
复制代码
脚本放在A目录下,注意把B路径写成绝对路径;效率低点,但是可以使用!

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
5 [报告]
发表于 2012-03-02 23:30 |只看该作者
本帖最后由 ziyunfei 于 2012-03-02 23:37 编辑
  1. find A -name *.txt  -maxdepth 1 -exec bash -c 'name=B\\$(basename "{}");cp {} ${name/.txt/$(date +%Y%m%d).txt}' \;
复制代码

论坛徽章:
0
6 [报告]
发表于 2012-03-02 23:32 |只看该作者
回复 5# ziyunfei


    lz说了,只需要当前目录下的txt...你还是不要用find了

论坛徽章:
0
7 [报告]
发表于 2012-03-02 23:44 |只看该作者
谢谢大家,明天我试试看行不行.用find的话好像连子目录的都查出来了,我问带我的人,他说也可以用find实现,我问他用哪个选项参数实现,他没跟我说哪个只叫我百度一下,百度没找到。
只会用ls -l *.txt 查到当前的目录
好像这样子写也行,但是就是不会重命名拼接文件名了:
ls -l A/*.txt | wak '{print $9}' >B

论坛徽章:
0
8 [报告]
发表于 2012-03-03 00:06 |只看该作者
本帖最后由 loveacat 于 2012-03-03 00:07 编辑

$ cat shcp
for file in $(ls *.txt)             #在A目录下执行./shcp
do
        name=${file%.*}
        cp $file ../B/$name$(date +%Y%m%d).txt
done

论坛徽章:
1
双子座
日期:2013-10-17 00:46:45
9 [报告]
发表于 2012-03-03 00:40 |只看该作者
回复 7# cas0005


    看清楚了5楼的每个参数再下结论也不迟。
  1. -maxdepth 1
复制代码

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
10 [报告]
发表于 2012-03-03 11:17 |只看该作者
  1. today=`date +%Y%m%d`
  2. cd folder_A

  3. ls *.txt |while read file
  4. do
  5.   cp $file folder_B/${file%.*}$today.txt
  6. done
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP