私のテストフォルダの下には3つのフォルダがあります。
Test ----> dir1, dir2, dir3
dir1、dir2、dir3の下には多くのファイルがあります。ファイルだけを圧縮したいのですが、dir1、dir2、dir3は圧縮したくありません。
答え1
存在するTest
:
pax -w's|.*/||' dir[1-3]/* | xz > file.tar.xz
パスコンポーネントを持たないファイルはアーカイブされます。
これにより、dir[1-3]/*
隠しファイルが省略されます。シンボリックリンクの場合、-s
シンボリックリンクターゲットも書き換えられます。
欲しいなら定期的なファイル名に改行文字が含まれていないと仮定すると、ファイルが存在します。次のことができます。
find dir[1-3] -type f | pax -ws'|.*/||' | xz > file.tar.xz
ファイル名に改行文字を含めることができる場合、一部のシステムでは次のように書くことができます。
find dir[1-3] -type f -print0 | pax -w0s'|.*/||' | xz > file.tar.xz
find
とはpax
標準コマンドですが、YMMVではありません-print0
。-0