
현재 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
및 를 제거하세요 .-n
rename