tar で指定ファイルで対象を絞る
Linux
パスが分かっている場合
bash
tar zxvf aaa.tar.gz path/to/the/file.txt
パスをパターンで指定したい場合
--exclude のようにワイルドカード指定ができないので、
bash
tar zxvf aaa.tar.gz $(tar ztf aaa.tar.gz | grep -E '(xxx|yyy|zzz).txt')
みたいな感じで
tar で固めるとき、指定パターンを除外
bash
tar zcvf xxx.tar.gz --exclude="*.log" --exclude="xxx/dump" xxx/
--exclude の位置に注意。いちばん後ろでは NG で、固めるディレクトリの手前に書く。
RedHat 7 → 9 辺りで挙動が変わったような(以前はエラーにならないが無視されていたが、メッセージ出すようになってくれたということか)
パターンの指定は、glob マッチ。(ただし globstar (**) 非対応)
→ 先頭と末尾に '/' をつけない。'**' は使わない というルールにしておけば良さそう。
- "*.log"
- ⭕ xxx/aaa/bbb/ccc.log ← 除外される
- ⭕ xxx/aaa/bbb.log ← 除外される
- "**/*.log'
- ❌ globstar 非対応なので期待通りにならないし、やりたいことは "*.log" で満たしているはず
- "dump"
- ⭕ xxx/aaa/dump/ 以下 ← 除外される
- ❌ xxx/aaa/dump-2/ ← 除外されない(期待通り)
- "aaa/dump"
- ⭕ xxx/aaa/dump/ 以下 ← 除外される
- ❌ xxx/bbb/dump/ ← 除外されない(期待通り)
- ❌ xxx/tmp.aaa/dump/ ← 除外されない(期待通り。文字列マッチではないので)
- ❌ xxx/aaa/dump-2/ ← 除外されない(期待通り)
- "dump/"
- ❌ xxx/aaa/dump/ 以下 ← 意図通りにならないことがある? やめとく
- "/dump/"
- ❌ xxx/aaa/dump/ 以下 ← 除外されない。やめとく
以下広告