删除文件的子字符串以在终端中索引

时间:2013-07-19 11:17:55

标签: bash file shell terminal rename

我有一个文件列表。他们遵循以下模式:_000n_NAME.PNG(文件编号为n)

在终端(Linux或Mac OS)中,是否可以在我的所有文件的单个命令中删除“ 000n ”?

2 个答案:

答案 0 :(得分:2)

Sed可以完成这项工作:

sed 's/^_[0-9]*\(_.*\)$/_\1/'

如果你想剥离下划线(数字之前和之后):

sed 's/^_[0-9]*_\(.*\)$/\1/'

完整脚本:

while read f; do
    mv "$f" $(echo "$f"|sed 's#^.*_[0-9]*_\(.*\)$#\1#')
done < <(find . -name "_0*_NAME.PNG")

答案 1 :(得分:2)

您可以使用:

  find . -iname '_000n*.png' | sed -e 's/\(_000n_\(.*.png\)\)/\1 \2/g' | xargs -n 2 mv
  • find:将列出当前文件夹中名为_000n * .png的所有文件,从而满足您的需求
  • sed:将提取正确的部分并显示原始+新名称
  • xargs -n 2:将参数传递给下一个命令分组2
  • mv:将重命名

使用_000n_toto1.png_000n_toto2.png和文件夹

中的其他文件进行了测试