我有几个视频文件文件夹需要重命名为统一的东西,例如:foldername.videotypexvideonumber.avi
. 我已经研究过创建一个 shell 脚本来简化它。该mv
命令似乎是执行此操作的最佳方法。
但是,我看到的每个指南/教程/手册页都说,当我重命名文件时,我还必须包含文件扩展名。这通常没问题,但有些文件夹包含多种文件类型的视频,例如 .mkv 和 .avi 甚至一些 .rmvb 文件。
所以,我需要知道的是,是否有一种方法可以通过终端重命名文件,而不必在这样做时指定文件类型——基本上是为了使扩展名保持不变,无论在重命名之前它是什么。
确切地知道你想做什么会有所帮助,但你当然可以这样做。了解BASH 参数扩展可能非常有必要。
根据您要做什么,您可能需要将扩展名和文件名分开,也可能不需要。
我假设您已经
cd
将相关文件编辑到文件夹中。案例1:假设您想将每个文件名中的字符串“bad”更改为“good”;那么您可以使用简单的替换,即您可以执行以下操作:
for file in * ; do mv "$file" "${file//bad/good}" ; done
(一定要确保没有改变坏到好会覆盖已经存在的东西。)无论扩展如何,这都会起作用。
案例2:假设您需要在扩展之前添加“新”,无论它是什么,那么您可以这样做:
for file in * ; do filename="${file%.*}" ; extension="${file##*.}" ; mv "$file" "${filename}new.${extension}" ; done
扩展名将保持不变,无论它是什么。
我会提供更多建议,但同样,我真的不知道你到底想做什么。
快速回答:
您不能这样做,因为扩展名是文件名的一部分。
长答案:
您可以使用图形界面将高级重命名为
purrr
或gprename
但!
在您的批量重命名脚本中,您可以使用以下文件名拆分技术:
可能有一种更优雅的方式来做到这一点,但它有效
将test2替换为任何您想要的计数器或其他东西。