여러 디렉터리에 있는 파일을 실행하는 스크립트를 작성하는 방법

여러 디렉터리에 있는 파일을 실행하는 스크립트를 작성하는 방법

여러 디렉터리에 있는 파일을 실행하는 스크립트를 작성하는 방법은 무엇입니까?

문제는 이것이다: 나는 많은 디렉토리를 가지고 있는데, 각 디렉토리에는 a.pyPython 스크립트로 읽고 분석하려는 데이터 파일(예: )이 있습니다. 각 디렉토리에 "cd"하고 "a.py"를 입력하고 싶지 않습니다. 출력은 각 디렉터리에 저장됩니다.

답변1

find당신에게 마법을 걸어줄 거예요.

find -name datafile.dat -execdir ~/a.py '{}' \;

find는 모든 하위 디렉터리에서 일련의 규칙과 일치하는 파일을 반복적으로 검색하고 해당 파일에 대해 작업을 수행합니다.

-name 규칙을 사용하면 지정한 이름과 일치하는 이름을 가진 파일을 찾을 수 있습니다. 와일드카드를 사용할 수 있습니다. 예를 들어 "*.dat"는 모든 .dat 파일을 찾습니다.

필요한 경우 -name 대신 -regex를 사용하여 glob 패턴 대신 정규식 패턴과 일치시킬 수 있으므로 ".*\.dat$"를 사용하여 모든 .dat 파일과 일치시킬 수 있습니다.

-execdir은 찾은 파일의 디렉터리에서 사용자가 제공하는 모든 명령을 실행하고 "{}"를 찾은 파일로 바꿉니다.

답변2

아마도 for루프를 사용할 수도 있습니다.

for i in first_dir second_dir third_dir; do
    pushd $i
    a.py
    popd
done

set to , as again , 마지막으로 as 를 pushd $i; a.py; popd사용하여 실행 됩니다 . 지정된 디렉터리로 전환한 다음 원래 위치로 다시 전환합니다.$ifirst_dir$isecond_dir$ithird_dirpushdpopd

관련 정보