剥离文件名和重命名

whi*_*ngs 6 command-line rename

我可以使用什么重命名命令来删除目录中的当前文件名并用字母数字文件名替换它们?

gg0001gg0002,等等?而且我希望该命令可以处理具有任何类型扩展名的文件。我希望保留扩展名。

我更喜欢使用 Perl rename

我试过这个命令,但它只是在文件名前加上“gg”,而我想要替换原始文件名:

rename 's/^/gg_/' *

ter*_*don 6

您实际上并不需要此rename命令,您可以直接在 shell 中执行此操作:

c=0; for i in *; do let c++; mv "$i" "gg_$(printf "%03d" $c)${i#"${i%.*}"}"; done
Run Code Online (Sandbox Code Playgroud)

printf "%03d" $c将打印$c变量,根据需要用3前导零填充它。该let c++递增计数器($c)。该${i#"${i%.*}"}提取扩展。更多关于这里

我不会用rename这个。我不认为它可以进行计算。像s/.*/$c++/e失败这样的有效 Perl 构造,我看不到任何其他方法可以让它进行计算。这意味着您仍然需要在循环中运行它并让其他东西为您增加计数器。就像是:

c=0;for i in *; do let c++; rename -n 's/.*\.(.*)/'$c'.$1/' "$i"; done
Run Code Online (Sandbox Code Playgroud)

但是使用更简单的mv方法没有任何优势。