簡體   English   中英

通過刪除字母從外殼重命名文件

[英]Renaming files from shell by removing letters

我有很多jpg文件,其名稱中包含字母和數字。 我想刪除所有字母,例如abc12d34efg.jpg變成1234.jpg 對於for循環,我認為:

 for i in *.jpg; do mv "$i" ...

但是我找不到想要的命令。

使用shell參數擴展:

for fname in *.jpg; do mv "$fname" "${fname//[[:alpha:]]}jpg"; done

"${fname//[[:alpha:]]}"將所有出現的[[:alpha:]] (任何字母)替換為空。 因為這也會刪除jpg ,所以我們必須再次添加它-附加的jpg

您可以使用sed使用正則表達式將所有字母替換為空。

for i in *.jpg; do mv $i `echo $i | sed -e 's/[a-zA-Z]//g'`jpg; done

這是一個使用tr的單線解決方案

 for f in *.jpg ; do n="$(echo ${f} | tr -d a-zA-Z )" ; mv "$f" "${n}jpg" ; done

經過一些格式化,它看起來像

 for f in *.jpg ; do 
   n="$(echo ${f} | tr -d a-zA-Z )" 
   mv "$f" "${n}jpg"
 done

這是正在發生的事情:

首先,我們使用tr -d a-zA-Z從名稱中刪除所有字母。 abc12d34efg.jpg我們得到1234. (在末端的一個點.不會在屬於azAZ間隔),並指定這個值變量$n Ť

然后,我們可以將$f重命名$f ${n}jpg 而已。

更新以刪除小寫字母和大寫字母,請使用tr -d a-zA-Z ,僅刪除小寫字母,請使用tr -d az

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM