-1

pdflatex同じレベルのサブフォルダーにある同じ種類の複数のファイルに対して、単一の操作を実行するシェル スクリプトを作成したいと考えています。ディレクトリ構造の簡略版は次のとおりです。

/-|
 /a-|
  | a1.tex
  |
 /b-|
  | b1.tex
  |
 /c-|
    c1.tex

私がやりたいのは、スクリプトを から起動し、実際のスクリプト ファイルにすべてのサブディレクトリを手動で含めることなく、すべてのファイル/に対して実行することです。pdflatex.tex

アルゴリズムは、紙の上では十分に単純です。

  • ディレクトリに移動/

  • スクリプトで指定された正規表現に一致するすべてのディレクトリを検索します (ワイルドカード式を使用することもできます)

  • nレベル下に移動し、必要に応じて再び正規表現に従います

  • 現在のディレクトリ内のpdflatexすべてのファイルに対して実行.tex

... しかし、これを Unix シェル スクリプトに実装する方法がわかりません。

シェルスクリプトはこの種の操作を許可していますか? もしそうなら、実装はどのようになりますか?

4

2 に答える 2

0

他の人が言ったことから私が追加できる唯一のことは、いくつかのパラメーターです.

pdflatesxdirs

  #!/bin/bash
  pattern='*.tex'
  if [ -z $1 ]; then
    pattern="${1}.tex"
  fi

  maxdepth=' '
  if [ ! -z $2 ]; then
    maxdepth=" -maxdepth $2 "
  fi

  # borrowed from @devnull ;)
  find / -mindepth 1${maxdepth}-type f -name "$pattern" -exec pdflatex {} \;

それでchmod u+x pdflatexdirs

今それを次のように呼び出します

pdflatexdirs [optional search pattern] [optional maxdepth]

このスクリプトでは:

  • ここでのデフォルトの検索パターンは * .tex です
  • maxdepth を指定する場合は、検索も指定する必要があります
  • 検索を行うと、渡したものに * .texが追加されます
于 2013-10-10T05:37:27.530 に答える