検索とtarファイルはフォルダ構造を尊重しますか?

検索とtarファイルはフォルダ構造を尊重しますか?

複数の「日付」サブフォルダからすべてのcsvファイルを検索し、日付がファイルレベルではなくフォルダレベルにのみあるため、圧縮して構造を保存したいと思います。たとえば、

20200101
   A.csv
   B.py
20200102
   G.csv
   D.csv
   F.c

だから私もtar一緒に行きたい

20200101
   A.csv
20200102
   G.csv
   D.csv

私は試した:

ls 20200*/<some regex>.* | xargs -n1 tar -vczf odlists.tar.gz

しかし、ファイルは1つだけ保存されます!

ベストアンサー1

xargs -n1各パラメータに対するコマンドの実行を示します。したがって、tar一度に1つのファイルを保存すると、毎回前の保存が上書きされます。

それ以外の場合でも、-n1コマンドラインの長さの制限によりコマンドが脆弱になる可能性があります。すべてのパラメータを同時に受け付けることができない場合、呼び出しは繰り返され、… | xargs tar …各繰り返し呼び出しは以前のパラメータを上書きします。tar

を使用して1つ以上のファイルを含むアーカイブを作成し、tar -c繰り返しを使用してそのファイルに追加できますtar -r。最初はさまざまなオプションを渡す便利な方法がなく、圧縮されていないアーカイブを作成してから最後に圧縮する必要があるため、これは厄介です。

tarがこの-Tオプションをサポートしている場合は、それを使用して標準入力にファイル名を渡すことができます。これは似ていますxargsが、コマンドラインの長さに制限はありません。

printf '%s\n' 20200*/*.csv | tar -vczf odlists.tar.gz -T -

あるいは、tarがフィルタリングをサポートしていると仮定すると、それを使用できます。

tar -vczf odlists.tar.gz --exclude='*.' 2020*

おすすめ記事