여러 파일을 반복하는 방법

여러 파일을 반복하는 방법

파일에 대해 이와 같이 작동하는 스크립트가 있습니다.

./script 0001g.log > output

두 개 이상의 파일에 대해 다음과 같이

./script 0001g.log 0002g.log 0003g.log > output

스크립트는 각 입력 파일에서 특수 번호를 가져와서 출력 파일에 넣습니다.

내 질문은 1000개의 입력 파일이 있는데 어떻게 스크립트를 반복할 수 있느냐는 것입니다.

답변1

몇 가지 가능한 솔루션이 있습니다.

간단히

$ ./script *g.log >output

...그리고 이로 *g.log인해 명령줄이 너무 길어지지 않기를 바랍니다. 이것은 그다지 강력하지 않습니다.

스크립트가 제공된 파일 수에 의존하지 않는 경우, 즉 output각 입력 파일에 출력을 추가할 수 있는 경우 다른 해결 방법은 다음과 같습니다.

$ find ./ -type f -name "*g.log" | xargs ./script >output

세 번째 해결책은 루프를 스크립트 자체로 옮기는 것입니다.

for f in *g.log; do
  # old code using "$f" as file name
done

명령줄 길이 제한은 스크립트에 있으므로 문제가 없습니다.

이제 스크립트 호출이 이루어졌습니다.

$ ./script >output

답변2

만약에

./script 0001g.log 0002g.log 0003g.log > output

방정식

./script 0001g.log > output
./script 0002g.log >> output
./script 0003g.log >> output

그런 다음 루프를 사용하거나

`seq -f '%04gg.log' 10` | script > output

답변3

원하는 경우 파일을 디렉터리에 배치할 수 있습니다.

/opt/location/source
    /0001g.log
    /0002g.log
    /0003g.log

그런 다음 bash 스크립트에서 다음을 시도해 볼 수 있습니다

#!/bin/bash

# store path to files
SOURCE="/opt/location/source/"

# loop through files
for FILE in `ls $SOURCE*g.log`; do
    # do what you want to specific file
    echo $FILE
done

관련 정보