where - Das find des armen Windows Mannes
Ich gebe zu, ich benutze Windows. Sogar relativ gerne. Das liegt vor allem daran, dass ich es satt bin an meinem Desktop herumzuspielen (und keinen Zugang zu Macs habe). Aber als Linux developer kenne ich natürlich auch die Stärke einer Shell und der CLI tools. Deswegen habe ich auch immer ein Cygwin installiert so dass ich tools with find und grep nutzen kann. Ich finde die Windows Powershell sehr interessant und mächtig, bin es aber nicht gewohnt diese zu nutzen.
Deswegen lande ich auch oft in einem klassischen Windows Prompt (und ich nutze ConEmu um das erträglich zu machen). Ein Windows command das man auf jeden Fall kennen sollte ist where: es ist eine Kobination aus find, which und locate und erlaubt die Suche nach Files in Verzeichnissen oder Suchpfaden:
Suche ausführbare Befehle
Ohne zusätzliche Option durchsucht where das aktuelle Verzeichnis und den PATH. Das wird dazu benutzt um Befehle zu finden, dabei sind Suchmuster möglich:
C:\WINDOWS\system32>where java* C:\Windows\System32\javaws.exe C:\ProgramData\Oracle\Java\javapath\java.exe C:\ProgramData\Oracle\Java\javapath\javaw.exe C:\ProgramData\Oracle\Java\javapath\javaws.exe C:\Program Files\Java\java-1.8.0-openjdk-1.8.0.111-1\bin\java-rmi.exe C:\Program Files\Java\java-1.8.0-openjdk-1.8.0.111-1\bin\java.exe C:\Program Files\Java\java-1.8.0-openjdk-1.8.0.111-1\bin\javac.exe C:\Program Files\Java\java-1.8.0-openjdk-1.8.0.111-1\bin\javadoc.exe C:\Program Files\Java\java-1.8.0-openjdk-1.8.0.111-1\bin\javah.exe C:\Program Files\Java\java-1.8.0-openjdk-1.8.0.111-1\bin\javap.exe C:\Program Files\Java\java-1.8.0-openjdk-1.8.0.111-1\bin\javaw.exe
Rekursive Suche
Um Dateien mit einem Suchmuster unterhalb eines Pfades zu suchen verwendet man die /r option. Mit der /t option gibt where dann gleich noch ein paar Datei Details aus:
C:\>where /T /R c:\Windows\System32 *.cmd 843 30.10.2015 08:17:50 c:\Windows\System32\onlinesetup.cmd 199 30.10.2015 08:17:43 c:\Windows\System32\winrm.cmd
Scripting Hilfe
Zudem gibt es noch seziellen Such Syntax, so kann ich alle in einer Environment Variable enthaltenen Verzeichnisse durchsuchen:
C:\>where $PATH:java C:\ProgramData\Oracle\Java\javapath\java.exe C:\Program Files\Java\java-1.8.0-openjdk-1.8.0.111-1\bin\java.exe
Oder aber in einer Liste von Verzeichnissen suchen:
C:\>where "C:\Windows\system32;C:\Windows\SysWOW64":mode C:\Windows\System32\mode.com C:\Windows\SysWOW64\mode.com
Comments
Display comments as Linear | Threaded