2

我想重命名我的linux系统目录中的多个文件......

我的文件名如下:

Lec 1 - xxx.webm
Lec 2 - xxx.webm
Lec 3 - xxx.webm
Lec 4 - xxx.webm

而这样的例子不胜枚举...

这里 xxx 可以是任何字符列表(不一致)....

我想重命名这里的每个文件,例如:

mv Lec 1 - xxx.webm Lec 1.webm
mv Lec 2 - xxx.webm Lec 2.webm
mv Lec 3 - xxx.webm Lec 3.webm

等等....

for in 循环可以做,但如何做替换?

*去掉数字后的所有字符应该是我重命名的文件

4

3 回答 3

2

这个 for 循环应该可以完成这项工作:

for f in *.webm; do
   mv "$f" "${f/ -*/}.webm"
done
于 2016-07-30T10:21:30.473 回答
2

${string%substring}$substring:从 . 后面删除最短匹配$string

for i in *.webm; do mv $i ${i%xxx}; done

或查看:

${string%%substring}$substring:从后面删除最长的匹配$string

于 2016-07-30T10:21:53.280 回答
1

如果您已util-linux-ng安装:

find . -name "Lec*.webm" | xargs rename s/ -*//

或者:

for file in $(find . -name "Lec*.webm")
do 
  echo mv "$file" "`echo $file | sed s/ -*$//`"
done
于 2016-07-30T10:33:21.310 回答