2017-02-10 80 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

相關問題