所以我在一个文件夹中有一堆文件,其中前导数字代表文件的顺序,但它们不是通常的 1-n,如下所示:
2-file.txt
4-file.txt
7-file.txt
12-file.txt
我想让它们按从 1 到“文件数”的顺序排列,保留数字顺序,所以:
1-file.txt
2-file.txt
3-file.txt
4-file.txt
其中 1-file.txt 是前一个 2-file.txt,2-file.txt 是前一个 4-file.txt,依此类推
答案1
这个脚本应该可以为您完成这项工作。请务必将其从 DEBUG 切换到 LIVE :
#!/bin/sh
list=`ls *-file.txt | sort -n`
i=1
for f in $list
do
#DEBUG MODE
echo "mv $f $i-file.txt"
#LIVE MODE
#mv $f $i-file.txt
i=$(($i + 1))
done
这是一个没有硬编码扩展的版本:
#!/bin/sh
if [ -z $1 ]
then
echo "
You need to pass a prefix. For example:
${0##*/} -file.txt
"
exit 1
fi
list=`ls *${1} | sort -n`
i=1
for f in $list
do
#DEBUG MODE
echo "mv $f ${i}${1}"
#LIVE MODE
#mv $f ${i}${1}
i=$(($i + 1))
done