xargsにtarをディレクトリに抽出するように指示する方法

xargsにtarをディレクトリに抽出するように指示する方法

私は最初のスクリプトを書いた。

find /media/temp/test -type f -printf '%T@ %p\n*.tar.gz' | sort -n | tail -1 | cut -f2- -d" " | xargs tar -xvpf 

最近修正されたファイル.tar.gzを見つけて、/media/temp/testの代わりにいくつかのディレクトリに抽出したいと思います。

ベストアンサー1

残りのコマンドが正しく機能していると仮定すると、最後の部分だけを置き換えます。

xargs tar -xvpf

そして

(cd /certain/directory; xargs tar -xvpf)

tarコマンドはこのディレクトリで実行されます。これは、他のディレクトリに関連するコマンドを実行するのに一般的で便利な「トリック」です。

tarファイル名(この場合はfindコマンドの出力)が絶対パスであるため、これはここでのみ機能します。相対パス名の場合、上記の「cd」は機能しません。

tar利用可能なパラメータはすでにあります。

 -C directory
         In c and r mode, this changes the directory before adding the following files.  In x mode, change directories after opening
         the archive but before extracting entries from the archive.

したがって、最後の部分

xargs tar -C /certain/directory -xvpf

tarのバージョンを確認してテストしてください。プラットフォーム間には微妙な違いがあります(使用しているUNIXバリアントを指定しません)。アーカイブのパス名も相対的です。

おすすめ記事