여러 디렉터리에 있는 파일을 실행하는 스크립트를 작성하는 방법은 무엇입니까?
문제는 이것이다: 나는 많은 디렉토리를 가지고 있는데, 각 디렉토리에는 a.py
Python 스크립트로 읽고 분석하려는 데이터 파일(예: )이 있습니다. 각 디렉토리에 "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
사용하여 실행 됩니다 . 지정된 디렉터리로 전환한 다음 원래 위치로 다시 전환합니다.$i
first_dir
$i
second_dir
$i
third_dir
pushd
popd