"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
출력이 올바르게 보이면 제거하십시오.