2016-08-08 6 views
0

私はシェルに新しいですし、私が学びたいのですが、しかし、それを理解することは少し複雑すぎるようだ:{}は "xargs -I {} unrar x {}"で何を意味しますか?

find . \(-name *.rar \) | xargs -I {} unrar x {}

あなたはないが何であるかをステップバイステップで説明していただけます。私はそれがフォルダに入り、発見したすべての.rarファイルを見つけて、|シンボルを使用してコマンドの2番目の部分にあるファイルを見つけ出します。 しかし、私はxargs -I {} unrar x {}部分と特に{}コマンドを理解していません。私はunrarがアーカイブを抽出することを知っています。

+1

は、私はあなたを助けるかもしれないxargs'男 'と思います。 – ArtOfWarfare

+2

[explainshell.com(http://explainshell.com/explain?cmd=find+.+%5C%28+-name+*.rar+%5C%29+%7C+xargs+-でステップバイステップの説明を参照してくださいI +%7B%7D + unrar + x +%7B%7D) –

+2

また、かなり不必要にひどいです。そこ-exec'見つける '与え全く' xargs'を使用するために、これを書くための理由は、ません、とxargsコマンドを使用すると、バグが(あなたがその名前にスペースを持つRARファイルを持っているとどうなるかを見て紹介する。 –

答えて

3

{}を生成したコマンドでファイル名に置き換え、プレースホルダです。

しかし、は、このコードを使用しないでください。 (サブディレクトリではなく)カレントディレクトリに*.rarに一致するすべてのファイルがある場合、それはrarアーカイブが、またはを珍しい名前を持つひどく動作します。あなたが本当にxargsを使用したい場合は、

find . -name '*.rar' -exec unrar x '{}' ';' 

を...または:代わりに考えてみましょう

find . -name '*.rar' -print0 | xargs -n 1 -0 unrar x 
関連する問題