web-dev-qa-db-ja.com

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

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

138
Isaac

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

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

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

解析lsBad Idea® です。その場合、単純なfindを優先します。

find . -type l -ls

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

find . -maxdepth 1 -type l -ls

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

267
Sylvain Pineau

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パーミッションフラグを要求するパーミッションがあることがわかります。また、^lでgrepを実行すると、シンボリックファイルまたはディレクトリのみをリストできます。

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$ 

driverおよびsubsystemディレクトリは、ここにある他のディレクトリへのシンボリックリンクです。

10
αғsнιη

grepはあなたの友達です:

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

これは、lの代わりにperms列のリンクを表す「l」で始まる行をリストします。ディレクトリにはdを使用し、ファイルには-を使用します

5
Kalibur

POSIXly:

find ! -name . -Prune -type l
3
cuonglm

これは、ディレクトリ内のすべてのシンボリックリンクされたアイテム(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アイテムのみを返します。

1
odoncaoa

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

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

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

    ls -la
    

    これは、たとえディレクトリが隠されていても、ディレクトリ内のすべてのファイルを長くリストします。

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

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

0
saptarshi nag

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関数を介して再帰的に拡張できますが、上記で示したように、単一のディレクトリ内のリンクをリストするために単純なリスト生成を使用するだけで十分です。

0