ディレクトリとそのサブディレクトリにあるtarとすべての.phpファイルと.htmlファイルが必要です。使用する場合
tar -cf my_archive *
それは私が望まないすべてのファイルをタールします。使用する場合
tar -cf my_archive *.php *.html
サブディレクトリは無視されます。再帰的にtarを作成し、2種類のファイルのみを含めるにはどうすればよいですか?
ディレクトリとそのサブディレクトリにあるtarとすべての.phpファイルと.htmlファイルが必要です。使用する場合
tar -cf my_archive *
それは私が望まないすべてのファイルをタールします。使用する場合
tar -cf my_archive *.php *.html
サブディレクトリは無視されます。再帰的にtarを作成し、2種類のファイルのみを含めるにはどうすればよいですか?
回答:
find ./someDir -name "*.php" -o -name "*.html" | tar -cf my_archive -T -
-o -name [pattern]
新しい条件ごとに@gluukeを使用
bash
バージョン4.0を超えるものを使用している場合は、次のことを悪用shopt -s globstar
して簡単に作業することができます。
shopt -s globstar; tar -czvf deploy.tar.gz **/Alice*.yml **/Bob*.json
これにより、任意のサブディレクトリからAliceで始まるすべての.ymlファイルが追加され、任意のサブディレクトリからBobで始まるすべての.jsonファイルが追加されます。
shopt -s globstar
オプションがあるため、答えは正しく、実際には最良のものです
1つの方法は次のとおりです。
tar -cf my_archive.tar $( find -name "*.php" -or -name "*.html" )
ただし、この方法にはいくつかの注意点があります。
これらの回避策は、findコマンドの内容をファイルに出力してから、「-T、-files-fromFILE」オプションをtarに使用することです。
これはスペースのあるパスを処理します:
find ./ -type f -name "*.php" -o -name "*.html" -exec tar uvf myarchives.tar {} +
find ./ -type f -name "*.php" -o -name "*.html" -printf '%P\n' |xargs tar -I 'pigz -9' -cf target.tgz
マルチコアまたは1コアのみの場合:
find ./ -type f -name "*.php" -o -name "*.html" -printf '%P\n' |xargs tar -czf target.tgz