次のfind-exec(mv)
コマンドは say というディレクトリを探し、正常prog-3.6.9-stable-gnu
に名前を変更します。ただし、コマンドは次も返します。
検索: './prog': 対応するファイルやディレクトリがありません。
これはコマンドです:
find ./ -type d -name 'prog-*' -exec mv {} prog \;
find-exec(rm)
ディレクトリが次の場合、同様の結果が得られます。
findコマンドが来たと仮定すると今後exec unzip 操作中 (または exec rm -rf ) なぜこの標準エラーがあるのか尋ねたいと思います。私は、ファイルが見つかり、変更された場合、なぜstderrが「対応するファイルやディレクトリがありません」になるのでしょうか?
答え1
このエラーはフォルダー ""を移動しているために発生しますprog-*
。
実際の動作find
は次のとおりです。
find
まず、ディレクトリ自体を分析し、その内容を分析します。
したがって、find
あなたの例では次のようになります。
1.発見する目次prog-3.6.9-stable-gnu
2.名前変更
3. アクセスを試みます。 4. フォルダが見つからないため、エラーを返しますprog
。prog-3.6.9-stable-gnu
prog-3.6.9-stable-gnu
探すディレクトリを最初に解析し、その内容を解析する順序を「幅優先ナビゲーション」と呼びます。その反対は「深さ優先ナビゲーション」です。-depth
呼び出すオプションがあります。-depth
言及された内容を読んでみると面白いです。マニュアルページ探す(1)。
- "
-depth
: ディレクトリ自体の前に各ディレクトリの内容を処理します。" - 「
-delete
動きはまた、次のことを意味します。-depth
」 - "findコマンドラインは式として評価されるため、前に置くと
-delete
findが指定した開始点より下のすべてのエントリを削除しようとします。" - 「後で使用したいfindコマンドラインをテストするときは、後で驚きを避けるために明示的
-delete
に指定する必要があります-depth
。」 - 「
-delete
暗黙の意味のために、と一緒に-depth
効果的に使用することはできません。」-prune
-delete