2017-02-10 66 views
1

我有大量以ABC_XYZ_123.jpg格式命名的文件。删除文件名中的所有非数字字符

我想批量重命名它们,以便我可以获得格式:123.jpg。

如何在Mac上执行此操作?

谢谢!

+0

他们全部在一个单独的目录,或者是有一个层次?会不会有'ABC_123.jpg'和'DEF_123.jpg'? –

回答

1

在终端使用find

find . -type f -name "*_*_*.jpg" -execdir bash -c 'mv "$0" "${0##*_}"' {} \; 

会导致:

ABC_XYZ_123.jpg -> 123.jpg 
+1

谢谢!这工作! – ABZ

+0

所以我想了解什么mv“$ 0”“$ {0 ## * _}”。你能解释一下给我吗?我希望能够重新使用它来重命名其他名称格式。谢谢! – ABZ

+0

它被称为[shell参数扩展](https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html),基本上发生的事情是变量'$ 0'成为名称与'* _ * _ *'模式相匹配的文件。当用在大括号'$ {}'中时,它就像一个字符串操作的即时方法。 '## *'表示匹配最长的模式,直到它遇到'_',它被删除。我意识到这听起来相当复杂,但是一旦你使用了它几次,它就更有意义了;链接的页面有一些非常有用的例子,所以试试吧! –

0

因为我永远记得,专门对这种东西的凳子的命令行(像rename)我创建了一个bash脚本,它的任务是:

$ ls > x.sh 
$ vi x. sh 

VI

:%s/^[a-z_]*\(.*\)$/mv \0 \1/` 

然后:

$ source x.sh 

rename可以做的喜欢,但正如我所说,我从来没有打扰过去学习它。

$ brew install rename 
+0

我没有试过这个,但谢谢! – ABZ

相关问题