2012-02-07 3 views
1

を見つけるの使用:私が行うと私は、この持っている-Lオプション

mylink -> myfile 

を:

find -L . -name 'mylink' 

私が手:

./mylink 

なぜそうなのか、私は理解していませんこれはマニュアルページから与えられます:

-L:シンボリックリンクに従ってください。 findがファイルに関する情報を調べたり印刷したりすると、使用される情報は、リンク自体がではなく、リンクされているファイルのプロパティから取得されます(象徴的なリンクでないか、findがファイルを調べることができない場合を除く)リンク先を指しています)。

私の例では、次のような動作が予想されていました。findは検索を開始します。それはmylinkに遭遇する。 -Lが有効なので、それを逆参照して、 'myfile'というファイル名が付けられます。ファイル名がパターン 'mylink'と一致せず、何も報告されません。何が起こっていますか?

答えて

1

に再帰検索します名前は、ファイルのプロパティではありません、それはそれを含むディレクトリのプロパティです。

シンボリックリンクの内容を一致させる場合は、-lnameを使用してください。

+0

を使って 'lstat'を使うかどうかチェックしていませんでした。どういう名前がファイルのプロパティではないのですか? – abc

+1

ディレクトリは、ファイルそのものである名前をinodeにマップするディレクトリエントリで構成されています。 inodeにはメタデータ(サイズ、時間、パーミッションなど)がありますが、固有の名前はありません。実際、ファイル(iノード)には多くの名前があります。ハードリンクを参照してください。 – ephemient

1

「リンクの続き」は、ディレクトリへのリンクがある場合に適用されます。

ファイルへのリンクは単なるファイルそのものです。 -Lがなければ、ディレクトリへのリンクも単なるファイルです。

のみ-Lが追加された場合、リンク先のディレクトリ

+0

'-L'は' -uid'のような 'stat'関連のテストの意味にも影響します。 – ephemient

+0

@ephemient:良い点は、 'find'が' stat'の代わりに-L – sehe

関連する問題