내 폴더 구조는 다음과 같습니다
Main
├── Sub1
| ├── Subsub1
| | | ├── file1.tex
| | | ├── file2.tex
| ├── Subsub2
| | | ├── file1.tex
| | | ├── file2.tex
├── Sub2
| ├── Subsub1
| | | ├── file1.tex
| | | ├── file2.tex
| ├── Subsub2
| | | ├── file1.tex
| | | ├── file2.tex
pdflatex
모든 하위 디렉터리를 반복하고 각 파일에 대해 명령을 실행하고 싶습니다 .
내 시도
for d in */*/ ; do
pdflatex "$d*.tex"
done
...하지만 작동하지 않습니다.
답변1
Bash에서는 globstar
쉘 옵션을 사용합니다.
#!/usr/bin/env bash
shopt -s globstar
for d in Main/**/*.tex; do
echo pdflatex "$d"
done
아니면 찾기를 이용하세요.
find Main/ -type f -name '*.tex' -exec sh -c 'echo pdflatex "$@"' _ {} +
결과에 만족하면 에코를 삭제합니다.