如何从目录中的文件名中删除子字符串?

如何从目录中的文件名中删除子字符串?

我知道之前有人问过类似的问题,但我找不到讨论要替换的“位置”(1 到 5)的帖子。从存储在一个目录中的文件名中删除多个字符的最佳方法是什么?例如:从“0101 .jpg”到“.jpg”,从“0102 .jpg”到“.jpg”,从“0103 .jpg”到“.jpg”等。

我想将其作为批处理运行。任何帮助都非常感谢。TIA

答案1

要从文件名中删除 x 个字符,您可以使用rename(it id s perl 命令)和正则表达式:

rename -n 's/.{x}(.*)/$1/' *

其中 x 可以用 5 替换以删除前 5 个字符。

  • -n 表示模拟;删除它可获得实际结果。

  • sudo apt install rename安装它。

  • 例子:

    $ touch 123456.txt 222222.txt 333333.txt
    $ rename -n 's/.{5}(.*)/$1/' *
    rename(123456.txt, 6.txt)
    rename(222222.txt, 2.txt)
    rename(333333.txt, 3.txt)
    
  • 如果你想在前面添加一些内容:

    rename -n 's/.{5}(.*)/3333$1/' *
    rename(123456.txt, 33336.txt)
    rename(222222.txt, 33332.txt)
    rename(333333.txt, 33333.txt)
    

相关内容