ディレクトリ内のすべてのシンボリックリンクを一覧表示する方法


145

/var/www/WordPressにリンクするディレクトリにシンボリックリンクがあります。ディレクトリls -laからコマンドを実行すると、/var/www/WordPressへのリンクが表示されません。ディレクトリにあるすべてのシンボリックリンクをリストする方法はありますか?


回答:


80

grepwith lsコマンドを使用して、現在のディレクトリに存在するすべてのシンボリックリンクを一覧表示できます。

これにより、現在のディレクトリに存在するすべてのリンクがリストされます。

ls -la /var/www/ | grep "\->"

5
->」を含むファイルがある場合、偽陽性を返します。単純な試してくださいtouch "foo->"
シルヴァンピノー14

7
自分の回答に別の回答の内容をコピーして貼り付けないでください。-1
αғsнιη

3
なぜないgrepとINGの^l
エリランマルカ

3
いつものように、最良の答えは最高の+
FractalSpace

いいね!→.bash_alias:alias listlinks='ls -l --color | grep "\->"'8
フランクノッケ

284

解析は、lsある悪いアイデア ®、シンプルを好むfindような場合には:

find . -type l -ls

現在のディレクトリのみを処理するには:

find . -maxdepth 1 -type l -ls

クレジット:`ls -A`コマンドによって返されるファイル名を認識するシェルを作成するにはどうすればよいですか?これらの名前にはスペースが含まれていますか?


find: Unknown argument to -type: 1
ahnbizcad

15
@ahnbizcad:それは1(1)ではなくl(link)
シルヴァンピノー

3
素晴らしい答えです!このようにディレクトリパスを下って行かないように調整しfind /<your_directory> -maxdepth 1 -type l -ls 2>/dev/null ました。 ありがとうございます!
bgs

3
現在のディレクトリのみ(つまり、再帰的ではない)に追加し-maxdepth 1ます。
ジョシュアピンター

1
@ cig0 uが使用する必要はありませんawkuはおそらくこれ欲しい、:find . -maxdepth 1 -type l | sort -n
sobi3ch

10

このls -laコマンドは、すべてのファイルとフォルダー、およびシンボリックリンクディレクトリを表示します。このコマンドがシンボリックディレクトリを表示しない場合は、WordPressへのシンボリックリンクがないことを意味します

実行の結果を見るls -la

kasiya@kasiya-pc:~$ cd /sys/devices/platform/sony-laptop
kasiya@kasiya-pc:/sys/devices/platform/sony-laptop$ ls -la
total 0
drwxr-xr-x  3 root root    0 Sep  9 19:57 .
drwxr-xr-x 14 root root    0 Sep 10  2014 ..
-r--r--r--  1 root root 4096 Sep  9 22:32 battery_care_health
-rw-r--r--  1 root root 4096 Sep  9 22:32 battery_care_limiter
lrwxrwxrwx  1 root root    0 Sep  9 19:57 driver -> ../../../bus/platform/drivers/sony-laptop
-r--r--r--  1 root root 4096 Sep  9 22:32 modalias
drwxr-xr-x  2 root root    0 Sep  9 22:32 power
lrwxrwxrwx  1 root root    0 Sep  9 22:32 subsystem -> ../../../bus/platform
-rw-r--r--  1 root root 4096 Sep  9 22:32 touchpad
-rw-r--r--  1 root root 4096 Sep  9 19:57 uevent

すべてのシンボリックディレクトリにl、アクセス許可フラグを要求するアクセス許可が表示されます。また、grepを使用^lすると、シンボリックファイルまたはディレクトリのみを一覧表示できます。

kasiya@kasiya-pc:/sys/devices/platform/sony-laptop$ ls -la |grep ^l
lrwxrwxrwx 1 root root    0 Sep  9 19:57 driver -> ../../../bus/platform/drivers/sony-laptop
lrwxrwxrwx 1 root root    0 Sep  9 22:32 subsystem -> ../../../bus/platform
kasiya@kasiya-pc:/sys/devices/platform/sony-laptop$ 

ドライバーサブシステムのディレクトリは、ここの他のディレクトリへのシンボリックリンクです。


1
ここでのマイナーな仕様...許可文字列の最初の文字は実際には許可ではありません。ファイルの種類です。あなたが述べたようにl、それはシンボリックリンクであることを意味します。
conner.xyz

5

grep あなたの友達です:

ls -lhaF | grep ^l   # list links
ls -lhaF | grep ^d   # list directories
ls -lhaF | grep ^-   # list files

これは、の代わりにパーマ列内のリンクを表す「L」で始まる行一覧が表示されますl使用のdディレクトリのと-ファイルのために



1

ディレクトリ内のシンボリックリンクを表示するには:

  1. ターミナルを開き、そのディレクトリに移動します。

  2. 次のコマンドを入力します。

    ls -la
    

    これは、隠しファイルであっても、ディレクトリ内のすべてのファイルを長くリストします。

  3. で始まるファイルlは、シンボリックリンクファイルです。


1
-1:KasiyAの答えはすでにこれをカバーしています。
ムル14

1

これは、ディレクトリ内のすべてのシンボリックリンクされたアイテム(dirsとfnsの両方)を返します。

find . -maxdepth 1 -type l -print | cut -c3- | grep -v "\#"

ただし、実際にシンボリックリンクされたアイテムタイプを区別するために:

ls -lhaF | grep ^l | grep -v "\#" | cut -c42- | grep -v "/" | cut -d' ' -f1

シンボリックリンクされたファイル名アイテムのみを返します。そして、

ls -lhaF | grep ^l | grep -v "\#" | cut -c42- | grep "/" | cut -d' ' -f1

シンボリックリンクされたdirnameアイテムのみを返します。


0

入力するとls -lai、すべてのファイルとサブディレクトリが対応するiノード番号とともに一覧表示されます。同じiノード番号を持つファイルはリンク(ハードまたはソフト)であり、このソリューションはシンボリックリンクでも機能することがわかります。


ls -laiファイルとそのシンボリックリンクに対して同じiノード番号を表示しませ。ハードリンクとは異なり、シンボリックリンクには独自の個別のiノードエントリがあります。これはどのように見えるかです。
エリアケイガン14

0

pythonでも同様に実行できます。

$ python -c "import os,sys; print '\n'.join([os.path.join(sys.argv[1],i) for i in os.listdir(sys.argv[1]) if os.path.islink(os.path.join(sys.argv[1],i))])" /path/to/dir

サンプル実行:

$ python -c "import os,sys; print '\n'.join([os.path.join(sys.argv[1],i) for i in os.listdir(sys.argv[1]) if os.path.islink(os.path.join(sys.argv[1],i))])" /etc
/etc/vtrgb
/etc/printcap
/etc/resolv.conf
/etc/os-release
/etc/mtab
/etc/localtime

これはos.walk、関数を介して再帰的に拡張することができますが、上記で示したように、単一のディレクトリ内のリンクをリストするために単純なリスト生成を使用するだけで十分です。

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