我想重命名文件夹中的所有文件 PREFIX+COUNTER+FILENAME
例如。输入:
england.txt
canada.txt
france.txt
Run Code Online (Sandbox Code Playgroud)
输出:
CO_01_england.txt
CO_02_canada.txt
CO_03_france.txt
Run Code Online (Sandbox Code Playgroud)
Joh*_*024 19
这可以满足您的要求:
n=1; for f in *.txt; do mv "$f" "CO_$((n++))_$f"; done
Run Code Online (Sandbox Code Playgroud)
n=1
这会将变量初始化n
为 1。
for f in *.txt; do
这会在当前目录中名称以.txt
.
mv "$f" "CO_$((n++))_$f"
这会将文件重命名为具有作为计数器的CO_
前缀n
。该++
符号告诉 bash 增加变量n
。
done
这标志着循环的结束。
此版本使用printf
它可以更好地控制数字的格式:
n=1; for f in *.txt; do mv "$f" "$(printf "CO_%02i_%s" "$n" "$f")"; ((n++)); done
Run Code Online (Sandbox Code Playgroud)
特别是,%02i
当n
数字仍然是个位数时,该格式将在数字前放置一个前导零。