숫자가 있는 파일의 이름을 해당 1-n 숫자로 순차적으로 바꿉니다.

숫자가 있는 파일의 이름을 해당 1-n 숫자로 순차적으로 바꿉니다.

따라서 폴더에 여러 개의 파일이 있습니다. 여기서 선행 숫자는 파일의 순서를 나타내지만 다음과 같이 일반적인 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

관련 정보