使用一行命令重命名文件

我有这个目录,想要重命名文件:

===> ls -1 Der-vierte-Weise/ 10 - 10 - Erkenntniss.ogg 1 - 01 - Hoffnung.ogg 11 - 11 - Wahrheit.ogg 12 - 12 - Dankbarkeit.ogg 13 - 13 - Kredits.ogg 2 - 02 - Familie.ogg 3 - 03 - Demut.ogg 4 - 04 - Freude.ogg 5 - 05 - Schoenheit.ogg 6 - 06 - Solidaritaet.ogg 7 - 07 - Entscheidung.ogg 8 - 08 - Hilfe.ogg 9 - 09 - Unterstuetzung.ogg 

结果应如下所示:

 ===> ls -1 Der-vierte-Weise/ 01 - Hoffnung.ogg 02 - Familie.ogg ... 

我想用常见的shell工具解决这个问题。

你可以使用rename

 rename -n 's/^[0-9]+ - //' * 

在测试后删除-n以实际重命名文件

说明

  • s/old/new/old替换old
  • ^字符串的开始
  • [0-9]+一些数字

bash参数扩展从开始剥离所需的部分:

 for f in *[[:blank:]]*.ogg; do echo mv -i -- "$f" "${f#[[:digit:]]*-[[:blank:]]}"; done 

扩展forms:

 for f in *[[:blank:]]*.ogg; do echo mv -i -- "$f" "${f#[[:digit:]]*-[[:blank:]]}" done 

echo用于干运行; 为实际行动摆脱它:

 for f in *[[:blank:]]*.ogg; do mv -i -- "$f" "${f#[[:digit:]]*-[[:blank:]]}"; done 

例:

 % ls -1 1 - 01 - Hoffnung.ogg 2 - 02 - Familie.ogg % for f in *[[:blank:]]*.ogg; do mv -i -- "$f" "${f#[[:digit:]]*-[[:blank:]]}"; done % ls -1 01 - Hoffnung.ogg 02 - Familie.ogg