파일을 섞고 순차적으로 이름을 바꾸는 방법

파일을 섞고 순차적으로 이름을 바꾸는 방법

현재 1부터 1000까지 순서대로 이름이 지정된 .png 이미지 세트가 있습니다. 어떻게 이 이미지를 가져와서 1과 1000 사이의 임의의 숫자에 다시 할당하여 동일한 일련 번호 범위를 얻게 됩니까? 각 숫자 아래의 숫자는 더 이상 동일하지 않습니까?

답변1

다음과 같이 할 수 있습니다:

names=({1..1000}.png)
new_names=($(shuf -e {1..1000}.png.tmp))
for n in "${!names[@]}"; do
    echo mv "${names[$n]}" "${new_names[$n]}"
done && rename -n 's/\.tmp$//' *.tmp
  • 두 개의 배열을 생성 $names하고$new_names
  • .tmp기존 파일을 덮어쓰지 않으려면 이름을 지정해야 합니다 rename. 이 문제는 .
  • 배열 키를 반복하고 mv각각에 대해 실행합니다.

참고: 실제로 명령을 실행하려면 에서 echo및 를 제거하세요 .-nrename

관련 정보