パッチファイルが複数のパッチを含み、コマンドラインで入力ファイルを指定しない場合、patchはそれぞれを別々のパッチファイルから来たものとして適用を試みます。つまり、パッチごとに対象ファイル名を決め、その前のテキストを調べて、ファイル名と前提となるリビジョン番号を探します(詳しくはパッチの作成と利用のヒント参照)。
patchはパッチの前のテキストからファイル名を推定するため、次の規則を使います。まずpatchは、以下のように順序付きの候補ファイル名一覧を作ります。
patchはヘッダーの旧・新ファイル名を使います。-pnumまたは--strip=numオプションに必要な数のスラッシュがない名前は無視します。/dev/nullも無視します。patchが POSIX に準拠している場合、patchは ‘Index:’ 行の名前を使います。次にpatchは、以下のように候補一覧から名前を選びます。
patchは POSIX 準拠時には最初の名前、それ以外では最良の名前を選びます。patchが RCS、ClearCase、SCCS を無視しておらず(リビジョン管理参照)、候補のファイルは存在しなくても、RCS、ClearCase、SCCS のマスターファイルが見つかれば、patchはマスターのある最初の候補名を選びます。patchが POSIX 非準拠で、パッチがファイルを作成するように見える場合、patchは新規ディレクトリの作成数が最小になる最良の名前を選びます。patchはその名前を選びます。空でない一覧から最良のファイル名を決めるには、patchはまずパスの構成要素数が最小の名前を選び、その中でベース名が最短のもの、さらにその中で名前全体が最短のものを選び、最後に残った最初の名前を使います。
patchが POSIX 準拠かどうかについては、patchと POSIX 標準を参照してください。