Linux命令批量修改文件名字及内容

前些天把博客从WP搬到全球最大同性交友平台GitHub,今天又搬回来了(没事瞎折腾,囧),因为当前的主机2019年才到期。当时通过软件把博文转成MD文件不彻底,故有用到Linux命令来批量修改文件名字以及内容,现记录一下:

  1. 将文件名中的日期替换为当天的日期:
    date1=20160113
    date2=`date "+%Y%m%d"`
    for f in *$date1*; do mv "$f" "${f/$date1/$date2}"; done
  2. 将文件名中的下划线替换为空格:
    for f in *_*; do mv "$f" "${f//_/ }"; done
  3. 批量修改文件内容:
    sed -i "1,5 s/^categories/tags/g" `grep -rl categories`
    perl -pi -e "s/^categories/tags/g" `grep -rl categories`

其中的${PARAMETER/?/PATTERN/STRING}是用来查找和替换的,PARAMETER后面跟一个斜杠时只替换PATTERN首次匹配的字符,PARAMETER后面跟两个斜杠时替换所有PATTERN匹配的字符,这个和sed后面的/g功能一样,全局匹配替换。sed后面的-i表示直接修改原文件,1,5表示只对前5行的内容进行查找和替换的操作。

曾宪华 /
本文采用 署名-非商业性使用-相同方式共享 3.0许可协议 属于 程序人生 分类, 被贴了 Linux sed 书签

上一篇 正则表达式模式修饰词
下一篇 SAS获取某目录下所有指定类型的文件名称