パスなしですべてのファイルを圧縮する方法

パスなしですべてのファイルを圧縮する方法

現在のディレクトリとサブディレクトリですべての.cファイルを見つけて圧縮したいと思います。これを達成するために、次の方法を試しましたが、ファイルを解凍すると、ファイルは別のフォルダにあります。ファイルを圧縮するときにディレクトリを含めたくありません。

スクリプトは他のすべてのファイルを除外し、これらの.cファイルのディレクトリ構造を維持しないでください。

find . -name '*.c' | xargs tar -rf allcfiles.tar 

ここに画像の説明を入力してください。

ベストアンサー1

GNUtar(Linuxで一般的)がある場合は、この--transformオプションを使用できます。

たとえば、現在のコマンドを使用すると、次のディレクトリがあることを確認できます。

$ find . -name '*.c' | xargs tar -rf allcfiles.tar
$ tar tf allcfiles.tar                            
./b.c
./d/e.c
./a.c

以下を変換することでこれを防ぐことができます。

$ find . -name '*.c' | xargs tar --transform='s!.*/!!' -rf allcfiles.tar
$ tar tf allcfiles.tar                                                  
b.c
e.c
a.c

中の表現は--transform簡単なsed表現です。これはすべてのディレクトリコンポーネントを削除するだけです。

おすすめ記事