나는 다음과 같은 것을하고 싶다
specmd file5.awe
specmd file6.awe
specmd file7.awe
specmd file8.awe
specmd file9.awe
specmd file10.awe
specmd file11.awe
specmd file12.awe
이를 수행할 수 있는 좋은 방법이 있습니까? 제가 생각하는 가장 좋은 방법은
ruby -e "10.upto(15){|i| puts i}" | xargs -I {} specmd file{}.awe
이는 Ruby에 의존하고 이 경우에는 Ruby가 필요하지 않은 것처럼 느껴지기 때문에 확실히 좋은 접근 방식은 아닙니다.
참고: 더 많은 파일이 있습니다(예: file4.awe
, file13.awe
).아니요원하므로 어떤 와일드카드(아마?)도 내가 원하는 대로 작동하지 않습니다.
답변1
Bash에서는 내장 명령을 사용하여 범위를 반복하는 루프를 만들 수 있습니다.
for i in {5..12}
do
specmd file${i}.awe
done
다른 유사한 상황에 대한 더 많은 옵션이 있습니다. 여기에 링크를 남겨두겠습니다.
답변2
나는 이것이 오래된 질문이라는 것을 알고 있지만 저항할 수 없습니다.
for 루프도 없고 while 루프도 없고 순수한 명령줄 bash만 있습니다.
echo file{5..12}.awe | xargs -n1 specmd
답변3
for f in file[5-9].awe file1[012].awe
do : stuff with "$f" files
done
...아니요모두전 세계적으로 그들은 동일합니다.
그렇지 않으면 다음과 같이 할 수 있습니다.
x=4
while [ 13 -gt "$((x+=1))" ]
do : stuff with "file$x.awe"
done
...반복될 때 반복자를 생성하는 이점이 있으며 거의 모든 스크립트 쉘에서 기본적으로 작동합니다.(글로브도 마찬가지).
답변4
GNU Parallel을 사용하면 다음과 같습니다:
parallel specmd file{}.awe ::: {5..12}
seq 5 12 | parallel specmd file{}.awe
parallel specmd ::: file{5..12}.awe