回答:
grep
with ls
コマンドを使用して、現在のディレクトリに存在するすべてのシンボリックリンクを一覧表示できます。
これにより、現在のディレクトリに存在するすべてのリンクがリストされます。
ls -la /var/www/ | grep "\->"
->
」を含むファイルがある場合、偽陽性を返します。単純な試してくださいtouch "foo->"
grep
とINGの^l
?
alias listlinks='ls -l --color | grep "\->"'
8
解析は、ls
ある悪いアイデア ®、シンプルを好むfind
ような場合には:
find . -type l -ls
現在のディレクトリのみを処理するには:
find . -maxdepth 1 -type l -ls
クレジット:`ls -A`コマンドによって返されるファイル名を認識するシェルを作成するにはどうすればよいですか?これらの名前にはスペースが含まれていますか?
find: Unknown argument to -type: 1
1
(1)ではなくl
(link)
find /<your_directory> -maxdepth 1 -type l -ls 2>/dev/null
ました。 ありがとうございます!
-maxdepth 1
ます。
awk
uはおそらくこれ欲しい、:find . -maxdepth 1 -type l | sort -n
この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$
ドライバーとサブシステムのディレクトリは、ここの他のディレクトリへのシンボリックリンクです。
l
、それはシンボリックリンクであることを意味します。
ディレクトリ内のシンボリックリンクを表示するには:
ターミナルを開き、そのディレクトリに移動します。
次のコマンドを入力します。
ls -la
これは、隠しファイルであっても、ディレクトリ内のすべてのファイルを長くリストします。
で始まるファイルl
は、シンボリックリンクファイルです。
これは、ディレクトリ内のすべてのシンボリックリンクされたアイテム(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アイテムのみを返します。
入力するとls -lai
、すべてのファイルとサブディレクトリが対応するiノード番号とともに一覧表示されます。同じiノード番号を持つファイルはリンク(ハードまたはソフト)であり、このソリューションはシンボリックリンクでも機能することがわかります。
ls -lai
ファイルとそのシンボリックリンクに対して同じiノード番号を表示しません。ハードリンクとは異なり、シンボリックリンクには独自の個別のiノードエントリがあります。これはどのように見えるかです。
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
、関数を介して再帰的に拡張することができますが、上記で示したように、単一のディレクトリ内のリンクをリストするために単純なリスト生成を使用するだけで十分です。