WindowsVistaまたは7のNTFSファイルシステムですべてのシンボリックリンクを検索する方法を探しています。
特定のターゲットを指定して、それを指すシンボリックリンクがあるかどうかを確認できればさらに良いでしょうが、それらすべてを検索する方法も素晴らしいでしょう。
これが私がこれまでに見つけた最良の方法です:
dir /a:l /s
しかし、それは醜いです。ターゲット=>ソースまたは同様の形式で1行に1つのファイルを表示するリストが望ましいです。 SYMLINKのgrepは、複数行形式のためうまくいきません。/Bベアスイッチは、ターゲットファイル名以外は何も提供しません。
Grepは複数行のツールであることに注意してください。 -anを使用して前のn行と次のn行の両方を取得し、-Anを使用して次のn行だけを取得できます。たとえば、grep -A10 configureは、「configure」という単語を見つけた後、次の10行を取得します。 Wordの2つのインスタンスが3行離れて構成されている場合、合計14行を取得することになります。
Everything 検索が書き直されたため(2013年1月)、属性を検索できるようになりました。 「attrib:L」のクエリは、のすべてのシンボリックリンクを明らかにします。コンピュータ上のさまざまなタイプ。属性で並べ替えるには、[属性]列(Ctrl + Shift + 8)を表示します。
このタイプの検索を頻繁に行う場合、またはキーボードショートカットを割り当てたい場合は、その特定の属性検索([検索]、[フィルターに追加])用のフィルターを作成することもできます。
最初のattrib:検索が一時的にすべてをロックアップしているように見えましたが、数秒後に終了しました...このような強力なツールを少し待つ価値があります。
試してみてください SageLinks -Windows用の小さなフリーウェアのオープンソースユーティリティです。すべてのシンボリックリンク、ジャンクション、ショートカットを見つけて再確認できます。
無料のツールを試すことができます SysInternalsによるジャンクション
ドライブ上のすべてのシンボリックリンクを検索するには、ルートに移動して次のように入力します。
C:\> junction -s -q
-sはすべてのサブディレクトリを通過します
-qは、「アクセスが拒否されました」などのエラーを無視します。
これにより、Windowsが現在使用しているすべての再解析ポイントが得られます。
特定のファイルまたはフォルダーが再解析ポイントであるかどうかを確認する場合は、後にユーティリティ名とファイル/フォルダー名を入力するだけです。バックスラッシュを追加すると結果が変わる可能性があるため、フォルダ名には注意してください。
C:\> junction c:\apps
Junction v1.06 - Windows junction creator and reparse point viewer
Copyright (C) 2000-2010 Mark Russinovich
Sysinternals - www.sysinternals.com
c:\apps: JUNCTION
Substitute Name: e:\dropbox\apps
C:\>
Win7のCygwin/bashスクリプト
c:\> cat find-dead-links.sh
#!/usr/bin/bash
find . -maxdepth 3 -type l -print0 |
while IFS= read -r -d $'\0' file ;do
[[ -e "$file" ]] && continue
echo "Bad link $file"
done
Windowsシステムでのすべてのファイル検索では、 Everything を使用することをお勧めします。超高速で非常に軽量です。
私もこの機能を探していましたが、他の場所では見たことがありません。 Python用のWindowsライブラリに追加しました。残念ながら、まだ熱心なPythonプログラマーでない場合は、すべてをインストールするためのいくつかの手順があります。
バツ
\Python26\scripts\easy_install jaraco.windows
これらの手順を実行すると、\ python26\scripts\find-symlinks.exeまたは\ python26\scripts\find-symlinks-script.pyというスクリプトが作成されます。これらのスクリプトは、オプションのパス名を使用して実行し、シンボリックリンクを検索できます。シンボリックリンクを検索し、結果を1行ずつ報告します。この手順は、Windows7のクリーンインストールでテストしました。
> cmd /c mklink /d mylink \windows
symbolic link created for mylink <<===>> \windows
> cmd /c mklink myfilelink \windows\notepad.exe
symbolic link created for myfilelink <<===>> \windows\notepad.exe
> \python26\scripts\find-symlinks
D .\mylink --> \windows
.\myfilelink --> \windows\notepad.exe