1. ホーム
  2. バッシュ

[解決済み】ディレクトリツリー内のすべてのシンボリックリンクを見つけるにはどうすればよいですか?

2022-04-17 15:37:01

質問

私は自分のウェブサイトのディレクトリツリー内のすべてのシンボリックリンクを見つけようとしています。私は、私が使用することができることを知っている find しかし、ディレクトリを再帰的にチェックする方法がわかりません。

このコマンドを試してみました。

find /var/www/ -type l

...そして、後で発見したのですが、その中のコンテンツは /var/www はシンボリックリンクなので、コマンドを変更しました。

find -L /var/www/ -type l

実行にしばらく時間がかかりますが、マッチングしません。

サブディレクトリをチェックするようにするにはどうすればいいですか?

どのように解決するのですか?

を再帰的にたどることになります。 /path/to/folder ディレクトリにあるシンボリックリンクのみをリストアップします。

ls -lR /path/to/folder | grep ^l

もし、シンボリックリンクもたどるつもりであれば、あなたの find コマンドを使用しますが、その際 -L オプションがあります。 find のman pageに書いてあります。

   -L     Follow symbolic links.  When find examines or prints information
          about files, the information used shall be taken from the  prop‐
          erties  of  the file to which the link points, not from the link
          itself (unless it is a broken symbolic link or find is unable to
          examine  the file to which the link points).  Use of this option
          implies -noleaf.  If you later use the -P option,  -noleaf  will
          still  be  in  effect.   If -L is in effect and find discovers a
          symbolic link to a subdirectory during its search, the subdirec‐
          tory pointed to by the symbolic link will be searched.

          When the -L option is in effect, the -type predicate will always
          match against the type of the file that a symbolic  link  points
          to rather than the link itself (unless the symbolic link is bro‐
          ken).  Using -L causes the -lname and -ilname predicates  always
          to return false.

では、こうしてみてください。

find -L /var/www/ -type l

これはおそらくうまくいくでしょう。 find のページでは、このダイヤモンドを使用しています。 -type オプションに変更する必要があります。 -xtype オプションを使用します。

          l      symbolic link; this is never true if the -L option or the
                 -follow option is in effect, unless the symbolic link  is
                 broken.  If you want to search for symbolic links when -L
                 is in effect, use -xtype.

それから。

find -L /var/www/ -xtype l