2012-03-11 144 views
1

我呈現140000幀來創建它們的電影。 然而,它從1.png開始,如果它開始於000001.png,以便在以最終切割快車輸入時保持順序良好,那將會更好。日期批量重命名文件

我曾經有一個程序的名稱,但它是基於power-pc,所以它不再工作。 此外,該程序甚至連一批300個文件都很糟糕,所以我想這會更好地使用終端。

我已經看到了重命名的例子,但大多數情況下用於更改擴展例如或更改前綴。

有人可以幫我用正確的終端腳本嗎?我需要儘快完成這個項目,否則我會重新渲染它,但需要15個小時才能完成。

回答

1
for i in *.png 
do 
    name=${i%.png} 
    [[ $name =~ ^[0-9]+$ ]] && mv $i "$(printf '%06d' $name).png" 
done 
+0

我必須在1次輸入此值還是在每行後輸入回車? – clankill3r 2012-03-11 16:41:38

+0

你可以把'all'放在一行中,';' – kev 2012-03-12 00:59:43

+0

否';''do'後面' – kev 2012-03-12 01:08:53

2

效率不高,但因爲你只需要運行一次:

for i in `seq 1 140000`; do 
    mv $i.png `printf %06d $i`.png 
done 

編輯:我認爲(也許錯誤地),你是使用Linux。這在Windows上不起作用。

編輯:是的,這應該在Mac OS X中工作。而不是在提示符中鍵入這些行,您可以將其保存到文件。通常,您可以使用名稱rename.sh來保存這樣的文件。那麼你可以像這樣的終端上運行它:

sh rename.sh 

如果你不確定,你可以改變mv線分爲:

echo mv $i.png `printf %06d $i`.png 

這將打印在屏幕上,這將是該命令執行。然後,如果一切看起來都正常,則將其更改回原始並再次運行。

如果文件數量不同,只需將140000替換爲最後一個文件的編號即可。

+0

我使用Mac OS X,因此必須工作的權利? 我檢查,發現者說它是121596文件,但是當我複製粘貼到另一個點是140000(更多)的東西,所以我必須在你的腳本中使用140000做什麼? 也必須輸入一行或三次? – clankill3r 2012-03-11 16:40:42

+1

我編輯了我的答案來回答你的問題。 – 2012-03-11 17:05:29

+0

我標記了kev的答案,因爲他接受的原因是他更清潔,我認爲這對於基於此選擇的stackoverflow的質量很重要。 (和我用他的線)。然而,你在這裏真的很有幫助,所以非常感謝。希望我可以舉出2個答案... – clankill3r 2012-03-11 23:04:28

1

如果您使用的是Windows

@echo off 
setlocal enableDelayedExpansion 
for %%F in (*.png) do (
    set "name=00000%%~nF" 
    ren "%%F" "!name:~-6!.png" 
)