tre*_*ake 8 rename replace files
我正在尝试重命名一些图像:
IMG_1.JPG
IMG_2.JPG
IMG_3.JPG
Run Code Online (Sandbox Code Playgroud)
我想,以取代IMG
与img
和.JPG
与.jpg
-我知道该怎么做第二部分:
$ rename 's/\.JPG$/\.jpg/' *.JPG
Run Code Online (Sandbox Code Playgroud)
我的问题是,我似乎无法mv
IMG_.JPG
到img_.jpg
-我知道你可以通过多种模式来rename
,但我似乎无法使用现有的文件名以小写修正值。
我该怎么做?
ste*_*eve 10
也许您需要使用 perl rename 命令。在我的 CentOS 机器上,它被称为“prename”。
$ ls
IMG_1.JPG IMG_2.JPG IMG_3.JPG
$ prename 's/^IMG/img/;s/\.JPG$/\.jpg/' *JPG
$ ls
img_1.jpg img_2.jpg img_3.jpg
$
$ prename -h
Usage: prename [OPTION]... PERLEXPR FILE...
Rename FILE(s) using PERLEXPR on each filename.
-b, --backup make backup before removal
-B, --prefix=SUFFIX set backup filename prefix
-f, --force remove existing destinations, never prompt
-i, --interactive prompt before overwrite
-l, --link-only link file instead of reame
-n, --just-print, --dry-run don't rename, implies --verbose
-v, --verbose explain what is being done
-V, --version-control=METHOD override the usual version control
-Y, --basename-prefix=PREFIX set backup filename basename prefix
-z, -S, --suffix=SUFFIX set backup filename suffix
--help display this help and exit
--version output version information and exit
The backup suffix is ~, unless set with SIMPLE_BACKUP_SUFFIX. The
version control may be set with VERSION_CONTROL, values are:
numbered, t make numbered backups
existing, nil numbered if numbered backups exist, simple otherwise
simple, never always make simple backups
Report bugs to pederst@cpan.org
$
Run Code Online (Sandbox Code Playgroud)
如果您想使用rename
来自util-linux
(有时称为rename.ul
)的哑命令,可能需要分两步进行,例如
$ ls
IMG_1.JPG IMG_2.JPG IMG_3.JPG
$ rename IMG img *JPG
$ rename JPG jpg *JPG
$ ls
img_1.jpg img_2.jpg img_3.jpg
$
Run Code Online (Sandbox Code Playgroud)
要以一般的方式回答您的问题,
在一行中用 2 个条件/替换重命名多个文件?
您通常会使用捕获组,在替换表达式中使用它们对应的反向引用来引用它们。例如
$ rename -n 's/^(.*)_(.*)\.JPG$/\L$1_$2.jpg/' *.JPG
rename(IMG_2.JPG, img_2.jpg)
rename(IMG_3.JPG, img_3.jpg)
Run Code Online (Sandbox Code Playgroud)
但是,在这种特殊情况下,将小写修饰符\L
应用于整个名称会更简单:
$ rename -n 's/.*/\L$&/' *.JPG
rename(IMG_2.JPG, img_2.jpg)
rename(IMG_3.JPG, img_3.jpg)
Run Code Online (Sandbox Code Playgroud)
另一种选择,使用 mmv
$ mmv -n '*.JPG' '#l1.jpg'
IMG_2.JPG -> img_2.jpg
IMG_3.JPG -> img_3.jpg
Run Code Online (Sandbox Code Playgroud)
(删除-n
实际执行重命名)。
归档时间: |
|
查看次数: |
907 次 |
最近记录: |