web-dev-qa-db-ja.com

シンボリックリンクを除くファイルを見つける方法

Linuxで特定のパターンに従うファイルを検索したいのですが、シンボリックリンクには興味がありません。

そのためのfindコマンドのオプションはないようです。

どうすればいいですか?

58
Barth

manページ をもう一度確認してください;)それは:

find /path/to/files -type f

type fは、通常のファイルのみを検索します-シンボリックリンクを除外します。

73
hek2mgl
! -type l

たとえば、シンボリックリンクを除く、/ usr/bin内のすべての通常ファイルを検索する場合:

find /usr/bin/ \! -type l
18

シンボリックリンクをたどって、返さないようにしますか(パターンに一致する場合)?

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.
3
ron rothman

私はMANを読みましたが、今では-Pであるように見えます。

-Pシンボリックリンクをたどりません。これはデフォルトの動作です。 findがファイルの情報を検査または印刷し、そのファイルがシンボリックリンクである場合、使用される情報はシンボリックリンク自体のプロパティから取得されます。

2
Nande

@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がチェックしないファイルのタイプをチェックします。

ありがとう。

0
Wellington1993

これは私のために働く:

find -H . -maxdepth 1 -type f

実際、-Hは必要ありません。

0
Joyce M