システムに依存しないシンボリックリンクを見つけますか?


2

「find」コマンドを使用して、シンボリックリンクをたどらせたい。ただし、RedHatとMac OS Xシステムの両方で、他のコード(IDL、組み込みのファイル検索機能はあまりありません)からコマンドを呼び出す必要があります。

問題は、RedHatシステムはGNU findバージョン4.1.20を使用しているのに対し、mac findは一部のBSDバージョンです。mac findでは、find -Lシンボリックリンクをたどるのに使用します。GNUバージョンでは、を使用しますfind -follow。シンボリックリンクをたどるための2つの間に共通のオプションはないようです。

私のマシンの回避策は、自分のfindプライベートバージョンに変更することですが、それはコードを配布するための許容可能なオプションではありません。誰もが代替案を推奨できますか?中に何かがあるfind私は、バージョンに依存しないシンボリックリンクをたどる方法を伝える逃したマニュアルでは?


1
編集としてではなく、回答として貼り付けてください。
surfasb

回答:


4

間違って検索を使用していました。

これは失敗します:

$ find -follow . -name "t*"
find: ollow: No such file or directory

これは機能しますが:

$ find . -name "t*" -follow

これは、-fを見つけるための特別なオプションだからだと思います。

GNUバージョンのfindでは、パスの前に-followも許可されていませんが、少なくとも有用なエラーが発生することに注意してください。

find: paths must precede expression

2
これについては、次の2行目で説明する必要man findがありますfind [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]。パスは常に検索式の前に来ます...
ダニエルベック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.