Linuxで特定のパターンに従うファイルを検索したいのですが、シンボリックリンクには興味がありません。
そのためのfind
コマンドのオプションはないようです。
どうすればいいですか?
! -type l
たとえば、シンボリックリンクを除く、/ usr/bin内のすべての通常ファイルを検索する場合:
find /usr/bin/ \! -type l
シンボリックリンクをたどって、返さないようにしますか(パターンに一致する場合)?
find -H
?
man find
...
-H Cause the file information and file type (see stat(2)) returned for each symbolic link specified on the command line to be those of
the file referenced by the link, not the link itself. If the referenced file does not exist, the file information and type will be
for the link itself. File information of all symbolic links not on the command line is that of the link itself.
-L Cause the file information and file type (see stat(2)) returned for each symbolic link to be those of the file referenced by the
link, not the link itself. If the referenced file does not exist, the file information and type will be for the link itself.
This option is equivalent to the deprecated -follow primary.
私はMANを読みましたが、今では-Pであるように見えます。
-Pシンボリックリンクをたどりません。これはデフォルトの動作です。 findがファイルの情報を検査または印刷し、そのファイルがシンボリックリンクである場合、使用される情報はシンボリックリンク自体のプロパティから取得されます。
@AquariusPowerが言うように、find -type f -xtype f
は私の問題を解決し、現在はシンボリックリンクではなく実際のファイルのみを取得しています。
From: https://linux.die.net/man/1/find
私が得た:
-xtype cファイルがシンボリックリンクでない限り、-typeと同じです。シンボリックリンクの場合:-Hまたは-Pオプションが指定された場合、ファイルがタイプcのファイルへのリンクである場合はtrue。 -Lオプションが指定されている場合、cが 'l'の場合はtrue。つまり、シンボリックリンクの場合、-xtypeは、-typeがチェックしないファイルのタイプをチェックします。
ありがとう。
これは私のために働く:
find -H . -maxdepth 1 -type f
実際、-Hは必要ありません。