すべてのディレクトリにあるtarファイルを見つけ、1行のコマンドで解凍したいと思います。ホームディレクトリとは別に見つけることができます。ただし、そのファイルがあるディレクトリからのみ抽出できます。パイプを使用してこれら2つの操作を1行でどのように実行できますか?
find -name any.tar ; tar xf any.tar
これを試してみました。any.tar
すべてのディレクトリで個別にファイルを見つけることができます。また、ファイルを個別に抽出しますが、そのファイルがあるディレクトリtar xf
にのみ抽出します。any.tar
これら2つのコマンドを1行で実行して、any.tar
コマンドがホームディレクトリでコンパイルされたときに見つけて抽出できるようにしたいと思います。
私はUnixに初めて触れました。助けてください。ありがとうございます。
答え1
これが役に立つかもしれません
find ./ -name '*.tar' -exec sh -c 'dir=$(dirname "$0"); tar -xvf "${0}" -C "${dir}"; done' {} \;
man
ページからtar
-C, --directory DIR
change to directory DIR
答え2
同じ問題を検索するこのページが見つかりましたが、提案は直接機能しませんでしたが、少しだけ調整することで私のユースケースに適していました。
find . -name "*.tar" -exec sh -c 'tar xvf {} -C $(dirname {})' \;
答え3
最初に見つける必要があるのは次のとおりです。
ディレクトリ内のすべてのtarファイルを見つけるには、find $directory -iname "*.tar"
次の点に注意する必要があります。-iname
はgnu拡張子なので、gnuを使用しない場合は-name *.tar -o -name *.TAR
ほぼ同じようにする必要があります。
今作業中のtarコマンドを追加します。
find $directory -iname "*.tar" -print0 | xargs -0 --max-args=1 tar xf
これにより、すべてのtarファイルが現在の作業ディレクトリに抽出されます。