tar.gzアーカイブに含まれる特定のファイルに対してgrep操作を実行できるコマンドを探しています。
例:
ファイル:archive.tar.gz、これには以下が含まれます。
fileA.txt
fileB.txt
fileC.txt
元のアーカイブからファイルを抽出せずに、1つのコマンドで他の2つではなくfileA.txtからのみgrepしたいと思います。
可能ですか?
私は試した:
for f in /path/*.gz; do
tar -xzf "$f" --to-command='grep -Hn --label="$TAR_ARCHIVE/$TAR_FILENAME" pattern || true'
done
このコマンドは、アーカイブに含まれるすべてのファイルに対してgrepを実行しますが、まったく必要ではありません。検索したいファイルだけをgrepするコマンドが必要です。
ベストアンサー1
tar
アーカイブでどのファイルを処理する必要があるかを教えてください。
for f in /path/*.gz; do
tar -xzf "$f" --to-command='grep -Hn --label="$TAR_ARCHIVE/$TAR_FILENAME" pattern || true' fileA.txt
done
(fileA.txt
コマンドの最後でtar
)。