重命名文件并保留特定模式

马蒂斯

我需要在文件夹中重命名PDF。有人不断用不同的文件名发送给我。但是,最后一位或两位数是好的。它们应该是相同的。

  • NK 2017年第4版。pdf
  • NK pdf 2017年第5号.pdf
  • NK PDF 2016.09.09第19.pdf
  • NK 2016.08.26 no.18.pdf

等等。仅保留最后一个数字,

  • 数字4.pdf
  • 数字5.pdf
  • 数字19.pdf
  • 数字18.pdf

我试图用正则表达式代替结果,但是没有运气。当我使用sed's / 2017 / foo /'之类的代码时,该代码有效。但是我需要结果中.pdf之前的最后一个数字的模式..什么是错误,我在做什么错?

#!/bin/bash
find /home/foo/bar/ -type f -iname "NK*" -print0 | while read -d $'\0' f
do
  mv "$f" "`echo $f | sed 's/.+\([0-9]{1,3}\.pdf\)/number\1/'`";
done
游艇

mv命令更改为此:

mv "$f" "$(echo "$f" | sed 's/.*[^0-9]\([0-9]\{1,3\}\.pdf\)/number\1/')"

基本正则表达式不支持以下内容:

  • .+.*改为使用
  • {m,n}\{m,n\}改为使用

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章