调试Perl one-liner以重命名文件

cjd*_*3SD 4 perl

我正在测试/尝试这个Perl单线程,我正在试图弄清楚文件发生了什么.我再也看不到这些文件了.我删除了它们或出了什么问题吗?

列出的文件名示例(原始):

IMG_0178.JPG
IMG_0182.JPG
IMG_0183.JPG
IMG_0184.JPG
IMG_0186.JPG
Run Code Online (Sandbox Code Playgroud)

我只想将文件扩展名更改为小写(.jpg):

perl -e'while(<*.JPG>) { s/JPG$/jpg/; rename <*.jpg>, $_ }'
Run Code Online (Sandbox Code Playgroud)

Bir*_*rei 9

不要使用renameglob.使用标量.尝试在替换之前将文件名分配给新变量,并将旧名称重命名为修改后的名称,如下所示:

perl -e'while(<*.JPG>) { ($new = $_) =~ s/JPG$/jpg/; rename $_, $new }'
Run Code Online (Sandbox Code Playgroud)

检查输出ls -1:

IMG_0178.jpg                                                                                                     
IMG_0182.jpg                                                                                                
IMG_0183.jpg                                                                                              
IMG_0184.jpg                                                                                               
IMG_0186.jpg
Run Code Online (Sandbox Code Playgroud)