我在文件夾中有很多文件,並且想要將序列號添加到此文件夾中每個文件的開頭。我也希望這些文件按其大小排序,而不是按字母順序排列。將連續數字添加到文件夾中文件名的開頭
例如:文件「something.mp3」應該重命名爲「01 - something.mp3」,如果它是該文件夾中最大的文件。我想在Windows上這樣做。
我在文件夾中有很多文件,並且想要將序列號添加到此文件夾中每個文件的開頭。我也希望這些文件按其大小排序,而不是按字母順序排列。將連續數字添加到文件夾中文件名的開頭
例如:文件「something.mp3」應該重命名爲「01 - something.mp3」,如果它是該文件夾中最大的文件。我想在Windows上這樣做。
ls -1S | awk '{print "mv \"" $0 "\" \""NR "_" $0"\";"}' | bash
然而解析ls
輸出是不鼓勵使用這個只有當你知道你的文件名不包含任何。異常字符Read more here
您的解決方案在Bash中完美運行,謝謝!我用Git CMD在Windows上運行它。 –
擊:
I=0; for FILE in `ls -S`; do mv $FILE "$I - $FILE"; I=$((I+1)); done
由於您的操作系統可能會按字母順序列出文件,我建議在某些時候使用printf
(這將產生 「0001 - file1.mp3」, 「0002 - file2.mp3」 等。 )。要更改填充0的數量,請使用printf%0中的另一個數字d。
N=1
while read -r file
do
mv "$file" "$(printf %04d $N) - $file"
N=$((N+1))
done < "$(ls -S)"
(或使用"$(ls -rS)"
如果你想有一個逆向排序(從大到小)。
我試圖用批處理腳本來運行它,但沒有發生任何事情。 –
的FOR
命令可以在一個批處理文件被用於確定文件大小:
for %%F in (*.mp3) do echo [%%F] is [%%~zF] bytes
儘管如此,您還是需要做一些工作才能正確排序,因爲大小10在文本排序中位於大小2之前。
的DIR
命令可用於列出大小順序文件:
dir /os *.mp3
dir /o-s *.mp3
dir /b /o-s *.mp3 > filesbysize.txt
那麼你可以使用FOR /F
讀取該文件,並開始做你的更名邏輯。
SET /A
命令可以用來執行整數數學,所以你可以找到一種方法來增加一個計數器,以確定你想要的前綴。
準備好玩弄每個這些命令。學習曲線並不差,但它不是零。
祝你好運!
不錯的主意。告訴我們,當你完成了。 – Stephan
你用bash標記了這個,你是要求一個Bash解決方案還是一個Window cmd? – daniu
我想在Windows上這樣做,如果可能的話。如果不是,我想在Bash做。 –