我在文件夹中有很多文件,我想在此文件夹中的每个文件的开头添加序列号。我还希望文件按其大小排序,而不是按字母顺序排列。
例如:file" something.mp3"应重命名为" 01 - something.mp3"如果它是文件夹中最大的文件。我想在Windows上这样做。
答案 0 :(得分:1)
击:
I=0; for FILE in `ls -S`; do mv $FILE "$I - $FILE"; I=$((I+1)); done
答案 1 :(得分:1)
ls -1S | awk '{print "mv \"" $0 "\" \""NR "_" $0"\";"}' | bash
但是不鼓励解析ls
输出。仅当您知道文件名不包含任何异常字符时才使用此选项。 Read more here
答案 2 :(得分:0)
由于您的操作系统可能按字母顺序列出文件,我建议在某些时候使用printf
(这将生成" 0001 - file1.mp3"," 0002 - file2.mp3&#34 ;等)。要更改填充0的数量,请使用printf%0 4 d中的其他数字。
N=1
while read -r file
do
mv "$file" "$(printf %04d $N) - $file"
N=$((N+1))
done < "$(ls -S)"
(如果您想要反向排序(从最大到最小),请使用"$(ls -rS)"
。
答案 3 :(得分:0)
可以在批处理文件中使用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
命令可用于执行整数数学,因此您可以找到一种增加计数器的方法,以确定您想要的前缀。
准备好玩这些命令。学习曲线不是很糟糕,但并不是零。
祝你好运!