Bash

Bash:遍歷所有子目錄並對某些文件執行命令

  • February 21, 2020

我的文件夾結構如下所示

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

…但這不起作用。

在 bash 中,您使用globstarshell 選項。

#!/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  "$@"' _ {} +

一旦您對結果感到滿意,請移除迴聲。

引用自:https://unix.stackexchange.com/questions/568881