104

ディレクトリとそのサブディレクトリ内のすべての .php および .html ファイルを tar したいと考えています。私が使用する場合

tar -cf my_archive *

それは私が望まないすべてのファイルをtarします。私が使用する場合

tar -cf my_archive *.php *.html

サブディレクトリは無視されます。再帰的に tar を作成し、2 種類のファイルのみを含めるにはどうすればよいですか?

4

8 に答える 8

172

find ./someDir -name "*.php" -o -name "*.html" | tar -cf my_archive -T -

于 2013-09-11T02:42:30.017 に答える
17

1 つの方法は次のとおりです。

tar -cf my_archive.tar $( find -name "*.php" -or -name "*.html" )

ただし、この方法にはいくつかの注意事項があります。

  1. スペースが含まれるファイルまたはディレクトリがある場合、失敗します。
  2. コマンドラインの最大長がいっぱいになるほど多くのファイルがある場合、失敗します。

これらの回避策として、find コマンドの内容をファイルに出力し、「-T, --files-from FILE」オプションを使用して tar を実行することができます。

于 2013-09-11T02:42:56.463 に答える
4

これにより、スペースを含むパスが処理されます。

find ./ -type f -name "*.php" -o -name "*.html" -exec tar uvf myarchives.tar {} +
于 2016-12-20T16:25:51.903 に答える
-2
tar -cf my_archive `find ./ | grep '.php\|.html'`

「find」と「grep」を使用して、すべてのディレクトリとそのサブディレクトリ内の .php および .html ファイルのすべてのパスを取得します。次に、これらのパス情報を tar に渡して圧縮します。

これらの記号 ` と ' には注意してください。また、他のいくつかの回答とは異なり、シェルがコマンドラインで許可する文字数の制限に達することにも注意してください。

于 2013-09-11T02:46:50.863 に答える