删除多个文件中的常用字符串并复制它们

时间:2018-01-25 10:28:08

标签: linux bash

我想复制并重命名文件夹中与此模式匹配的所有文件:

  • test.mp4.small.mp4
  • test2.mp4.small.mp4
  • test3.mp4.small.mp4

所有文件的共同点都是.mp4.small.mp4

我想将它们复制到新文件夹并重命名 - 结果应为:

  • test.mp4
  • test2.mp4
  • test3.mp4

尝试:

find . -name '*.mp4.small.mp4' -exec bash -c 'echo cp $0 ${0/PATH/}' {} \;

但这并没有重命名。

2 个答案:

答案 0 :(得分:1)

使用参数扩展语法从语法.的开头到分隔符${word%string}中删除最短的字符串为

find . -name '*.mp4.small.mp4' -exec bash -c 'echo cp $0 ${0%.mp4.small.mp4}.mp4' {} \;

此外,我假设您明知添加了echo,以解决重命名字符串的外观问题。要实际复制文件,请将其放在最终命令中。

答案 1 :(得分:0)

rename 's/.mp4.small//' *mp4.small.mp4

默认不会覆盖。

进行测试以确保:

ls *mp4.small.mp4 | sed 's/.mp4.small//' #list resulting file names