symlinkディレクトリー内のファイルを含む、ディレクトリー内のすべてのファイルを再帰的にリストします


147

私は、ディレクトリがあると/dir他のディレクトリに3つのシンボリックリンクがあり、その内部を /dir/dir11/dir/dir12/dir/dir13。私は、内のすべてのファイルを一覧表示したいdirにおけるものを含めてdir11dir12dir13

より一般的にするために、シンボリックリンクであるディレクトリ内のファイルを含むすべてのファイルを一覧表示したいと思います。find .ls -Rなどは、それらにナビゲートせずにシンボリックリンクで停止し、さらにリストします。


回答:


232

あなたが望むものを達成-Lするためのオプションls。シンボリックリンクを逆参照します。

したがって、コマンドは次のようになります。

ls -LR

これは次の方法でも実行できます

find -follow

この-followオプションは、ディレクトリへのシンボリックリンクをたどるようにfindに指示します。

Mac OS Xでの使用

find -L

-follow推奨されていません。


14
-followは非推奨になり、findの新しいバージョンでは-Lが優先されます。
pjz 2008

@pjz:非推奨の-の相互参照はありますか?-L 'を使用しますか?かなり驚いたことに、opengroup.org / onlinepubs / 009695399 / toc.htmの POSIX / SUS標準に「-L」と「-H」がリストされていることに気付きました。自分の質問に答えました。
ジョナサンレフラー、

これは私にはうまくいきませんでした。最初は何も起こらなかった-followので試してみました-フォルダーが見つからないと言っていましたollow
smatthewenglish

4
OS X 10.10この作品では:find -L .-私は、@ S.Matthew_Englishと同じ問題を抱えていた
fregante

あなたの答えは良いですが、私followはファイルパス(ファイルへのフルパス)だけを望み、ディレクトリパスは望んでいません、どうすればいいですか?
Vicky Dev 2016年


46
find /dir -type f -follow -print

-type f 実際のファイルを表示します(シンボリックリンクではありません)

-follow ディレクトリのシンボリックリンクをたどります

-print ファイル名を表示します。

lsタイプの表示が必要な場合は、次の操作を実行できます

find /dir -type f -follow -print|xargs ls -l

これにより、ls -Lオプションよりもきれいな表示になります
eusoubrasileiro

10

lsの使用:

  ls -LR

「man ls」から:

   -L, --dereference
          when showing file information for a symbolic link, show informa‐
          tion  for  the file the link references rather than for the link
          itself

または、findを使用します。

find -L .

findマンページから:

-L     Follow symbolic links.

いくつかのシンボリックリンクのみをたどる場合(おそらく、あなたが言及したトップレベルのリンクのみ)、コマンドラインで渡したシンボリックリンクだけをたどる-Hオプションを確認する必要があります。


5

tree適切であることがわかっていましたが、ツリーがインストールされていませんでした。だから、私はここでかなり近い代替を得ました

find ./ | sed -e 's/[^-][^\/]*\//--/g;s/--/ |-/'

これはまさに私が必要としたものでした。ありがとうございました。
スコットC

5
find -L /var/www/ -type l

# man find
-L     Follow  symbolic links.  When find examines or prints information about files, the information used shall be taken from the

リンク自体からではなく、リンクが指すファイルのプロパティ(壊れたシンボリックリンクである場合、またはfindがリンクが指すファイルを検査できない場合を除く)。このオプションの使用は、-noleafを意味します。後で-Pオプションを使用しても、-noleafは引き続き有効です。-Lが有効で、findが検索中にサブディレクトリへのシンボリックリンクを検出した場合、シンボリックリンクが指すサブディレクトリが検索されます。


2
ls -R -L

-Lシンボリックリンクを逆参照します。これにより、ファイルへのシンボリックリンクを表示することもできなくなります-それらは、ポイントされたファイルのように見えます。


-1

すべてのファイルの内容を印刷したい場合: find . -type f -exec cat {} +

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.