하위 디렉터리를 탐색하고 특정 파일에 대해 awk 스크립트를 실행합니다.

하위 디렉터리를 탐색하고 특정 파일에 대해 awk 스크립트를 실행합니다.

나는 많은 하위 디렉토리(words/blabla,words/blabla)를 포함하는 ../words라는 디렉토리를 가지고 있습니다. 각 하위 디렉토리에는 두 가지 유형의 파일(.*1.txt) 및 (.*2.txt)이 포함되어 있습니다. 나에게 필요한 것은 이러한 각 파일에 대해 AWK 스크립트를 실행하는 것입니다.

비슷한 게 있지 않을까요?

for d in words/*
do
    for f in .*[0-9].txt
    do
    awk -f script.awk ${f}
done
done

답변1

이것은 작동합니다:

for f in words/*/.*[12].txt
do
    awk -f script.awk "$f"
done

답변2

bash다음과 같은 최신 쉘을 사용하거나 zsh다음과 같은 것을 사용할 수 있습니다.

for i in words/*/*{1,2}.txt; do awk -f script.awk "$i"; done

어떤 이유로 과의 호환성이 필요한 경우 /bin/sh약간 장황하고 읽기 어려운 이 솔루션을 사용할 수 있습니다.

for i in words/*/*1.txt words/*/*2.txt; do awk -f script.awk "$i"; done 

답변3

이 시도for d in words/*; do for f in ./words/$d/*{0..9}.txt; do awk -f script.awk $f; done

관련 정보