私のソース ツリーには Git ソース コントロールを使用しているディレクトリがいくつか含まれており、Git メタデータまたはカスタム ログ ファイルへの参照を除外してツリー全体を tarball にする必要があります。
find/egrep/xargs/tar を組み合わせて使用してみようと思いましたが、どういうわけか tar ファイルには .git ディレクトリと *.log ファイルが含まれています。
私が持っているのは次のものです:
find -type f . | egrep -v '\.git|\.log' | xargs tar rvf ~/app.tar
誰か私の誤解を説明してくれませんか? find と egrep がフィルタリングしているファイルを tar が処理するのはなぜですか?
他のテクニックも検討します。
ベストアンサー1
ファイル数が複数のxargs
コマンドに増えると、驚くことになります。まず最初のファイルの tar ファイルを作成し、次に同じ tar ファイルを残りのファイルで上書きします。
GNU にはこの問題を解決するオプションがtar
あります:--exclude
tar cvf ~/app.tar --exclude .git --exclude "*.log" .