如何使用字符串替换重命名 linux 目录中的所有文件?

How to rename all files in a directory in linux with string substitution?

我想重命名 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 循环可以,但是如何进行替换?

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

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

for f in *.webm; do
   mv "$f" "${f/ -*/}.webm"
done

${string%substring}:从 $string.

后面删除 $substring 的最短匹配
for i in *.webm; do mv $i ${i%xxx}; done

或查看:

${string%%substring}:从 $string.

后面删除最长的 $substring 匹配项

如果您安装了 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