Skip to content

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

Trackbacks

No Trackbacks

Comments

Display comments as Linear | Threaded

No comments

Add Comment

BBCode format allowed
Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.
To leave a comment you must approve it via e-mail, which will be sent to your address after submission.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA