터미널을 사용하여 연속된 이름을 가진 파일의 이름을 다른 시퀀스로 바꾸는 방법은 무엇입니까?

터미널을 사용하여 연속된 이름을 가진 파일의 이름을 다른 시퀀스로 바꾸는 방법은 무엇입니까?

"o1.ray"에서 "o293.ray"까지의 파일이 포함된 디렉토리가 있습니다. "o132.ray"에서 "o424.ray"로 이름을 바꾸면서 다른 디렉토리로 이동하고 싶습니다.

터미널에서 어떻게 해야 하나요?

cd directory
for i in {1...293};
do cp o$i.ray subdirectory/o$i+131.ray;
done

나는 다음과 같은 결과를 얻었기 때문에 이것이 잘못되었음을 알고 있습니다.

error message 'cp: cannot stat 'o{1...293}.ray': No such file or directory 

답변1

Kusalananda가 암시했듯이 이는 대부분 구문 조정입니다.

for index in {1..293}; do echo mv o"${index}".ray subdirectory/o"$((index+131))".ray; done

echo출력이 올바르게 보이면 제거하십시오.

또는 zsh를 사용하세요.zmv 모듈:

autoload zmv
zmv -n 'o(<->).ray' 'subdirectory/o$[$1 + 131].ray'

구문은 산술 연산을 수행하며 이는 $[ ... ]다음 괄호를 사용하여 $1캡처 됩니다. 다양한 숫자를 캡처하는 zsh 와일드카드입니다. 엔드포인트가 없으며 귀하의 경우에는 매우 구체적일 수 있습니다.<->o<->

zmv -n 'o(<1-293>).ray' 'subdirectory/o$[$1 + 131].ray'

-n출력이 올바르게 보이면 제거하십시오.

관련 정보