1

私は非常にデリケートなbashの問題を抱えています:

ディレクトリfooが与えられた

$ ls
foo.tgz bar.tgz baz.tgz

次のようなパターンの最初の tarball を抽出する bash シングル ライナーを生成したいと考えています。

bash -c "tar -zxvf foo.tgz file1" # fine
bash -c 'tar -zxvf   *.tgz file1" # oups trying to extract bar.tgz from foo.tgz!

パターン マッチングを最初の拡張パラメータに制限する可能性はありますか?

改良:

find -iname '*.tgz' | xargs tar -zxvf # oups! cannot add restriction to only extract file1
4

2 に答える 2

2

-quitプライマリを次のように使用しfindます。

find -iname '*.tgz' -exec tar -zxvf '{}' \; -quit

アクションは左から右に処理されるため、これはtar最初の一致で実行され、その後findコマンドが終了します。

于 2013-02-21T14:57:33.550 に答える
2

もちろん、これを試してください:

tar -zxvf $(ls *.tgz | head -1) file1

パターンに一致するものがない場合はどうなるかを検討する必要があります....

于 2013-02-21T13:06:30.897 に答える