ディレクトリとそのサブディレクトリ内のすべての .php および .html ファイルを tar したいと考えています。私が使用する場合
tar -cf my_archive *
それは私が望まないすべてのファイルをtarします。私が使用する場合
tar -cf my_archive *.php *.html
サブディレクトリは無視されます。再帰的に tar を作成し、2 種類のファイルのみを含めるにはどうすればよいですか?
find ./someDir -name "*.php" -o -name "*.html" | tar -cf my_archive -T -
1 つの方法は次のとおりです。
tar -cf my_archive.tar $( find -name "*.php" -or -name "*.html" )
ただし、この方法にはいくつかの注意事項があります。
これらの回避策として、find コマンドの内容をファイルに出力し、「-T, --files-from FILE」オプションを使用して tar を実行することができます。
これにより、スペースを含むパスが処理されます。
find ./ -type f -name "*.php" -o -name "*.html" -exec tar uvf myarchives.tar {} +
tar -cf my_archive `find ./ | grep '.php\|.html'`
「find」と「grep」を使用して、すべてのディレクトリとそのサブディレクトリ内の .php および .html ファイルのすべてのパスを取得します。次に、これらのパス情報を tar に渡して圧縮します。
これらの記号 ` と ' には注意してください。また、他のいくつかの回答とは異なり、シェルがコマンドラインで許可する文字数の制限に達することにも注意してください。