在Mac(OS X)我有一個名爲很多這樣的圖片目錄:使用正則表達式來獲取文件名的部分
IMG_250x333_1.jpg
IMG_250x333_2.jpg
IMG_250x333_3.jpg
...
我需要所有的人都重命名爲:
IMG_1.jpg
IMG_2.jpg
IMG_3.jpg
...
我認爲使用帶有「mv」的UNIX命令行和一種正則表達式可以完成這項工作,但我不知道該怎麼做!有人可以幫忙嗎?
謝謝!
在Mac(OS X)我有一個名爲很多這樣的圖片目錄:使用正則表達式來獲取文件名的部分
IMG_250x333_1.jpg
IMG_250x333_2.jpg
IMG_250x333_3.jpg
...
我需要所有的人都重命名爲:
IMG_1.jpg
IMG_2.jpg
IMG_3.jpg
...
我認爲使用帶有「mv」的UNIX命令行和一種正則表達式可以完成這項工作,但我不知道該怎麼做!有人可以幫忙嗎?
謝謝!
這裏有一個方法,我想:
ls | sed 's/\(.*\)250x333_\(.*\)/mv "&" "\1\2"/' | sh
ls
的文件。sed
轉換文件名,並生成mv
命令。請注意,sed
命令中的&
會輸出完整的輸入字符串。sh
的mv
命令對這種做法的好處是,你可以刪除| sh
並測試您正則表達式是正確的。
如果有IMG_111x333_1.jpg和IMG_444x222_1.jpg會怎麼樣?你的風險壓延/覆蓋的東西...
但如果這是你想要的,你可以做這樣的:
#!/bin/bash
for f in *.jpg; do
new=${f/_*_/_}
echo mv "$f" $new
done
如果你喜歡它在做什麼,刪除單詞echo
。
好問題!對於每個圖像大小,我的確有幾個目錄,並且認爲我將採用shell腳本並根據文件名中的像素編號對其進行調整。但如果有從文件名中刪除數字的一般方法,我很高興!感謝您的幫助!! – user3704589 2015-04-01 18:36:12
非常感謝你的回答!我剛剛意識到,我的一個目錄中的文件在下劃線和「250」之間的名稱中有一個空格,如下所示:「IMG_ 250x333_1.jpg」。那麼正則表達式會如何呢?再次感謝!! – user3704589 2015-04-01 16:55:13
再次嗨!正如你所提到的,我執行了沒有「sh」的命令行,只是爲了檢查輸出。但是在輸出中我得到了像「IMG_250x333_1.jpg」這樣的全名。當我使用「sh」時,出現錯誤信息「sh:line 1:IMG_250x333-10.jpg:command not found」。我做錯了什麼? – user3704589 2015-04-01 17:02:11
我已經爲'sed' replace命令添加引號來處理文件/目錄名稱中的空格。如果它仍然無法正常工作,您可以粘貼輸出嗎? – joemfb 2015-04-02 14:00:26