
このコマンドで、すべてのサブディレクトリのすべてのファイルを抽出しようとしました。
$ find -name "*.bz2" -print -exec bizp2 -d "*.bz2" {}\;
find: missing argument to `-exec'
しかし、それはうまくいきません:(
ところで、{}の使い方を理解できません。
答え1
コマンドには2つのエラーがあります。
- bzip2の「* bz2」オプションを省略すると、{}はファイルルックアップによって返されるすべてのエントリに置き換えられます。
- {}と\の間にスペースを追加してください。
したがって、完全なコマンドは次のようになります。
find -name "*bz2" -print -exec bzip2 -d {} \;
答え2
...あなたの命令を理解できません。以下を使用します。
find -name *.bz2 -exec bzip2 -d '{}' ';'
なぜ「*.bz2」を入れたのか分かりません。 ~によると
man find
{}はシェルで解釈される可能性があるため、引用符「」で囲む必要があります。いくつかのテストでは、問題は{}と\;間にスペースを入れないという結論を下すことができるようです。そして、マニュアルページには最後のパラメータに;のみを含めるべきであると明記されています。