So wechseln Sie das Verzeichnis in die Ausgabe von grep

473
amallard

Ich arbeite gerade in PowerShell und möchte wissen, wie man cdin ein Verzeichnis geht, ohne die gesamte Länge des Verzeichnisnamens einzugeben.

Nehmen wir an, ich habe einen wirklich langen Verzeichnisnamen abcdefghijklmnop, und ich bin zu faul, cd abcdefghijklmnopwenn ich in diesen Ordner gehen möchte. Wie könnte ich das verkürzen? Ich kann ein einzelnes Verzeichnis mit grep auflisten. Daher ls | grep abcdachte ich daran, dieselbe Logik zu verwenden, um das cdVerzeichnis in die Ausgabe des grepBefehls zu ändern, vorausgesetzt es gibt nur 1 Ausgabe.

cd | grep abc

Natürlich funktioniert das nicht, aber gibt es eine Möglichkeit, dies zu tun, oder vielleicht eine bessere Möglichkeit, dies zu erreichen, ohne dass grepich es weiß?

0
Ich habe etwas anderes gefunden und meinen Kommentar entfernt. DrZoo vor 6 Jahren 0
Ich bin mit PowerShell nicht ganz vertraut, aber probieren Sie Folgendes: cd $ (ls | grep STRING). Das ist die letzte Vermutung, die ich habe. Ansonsten würde ich Tab-Vervollständigung verwenden. Ich finde das ehrlich gesagt einfacher, als diesen Befehl einzugeben. Ich bin mir nicht ganz sicher, ob das funktionieren wird. Eine weitere Frage ist, ob Sie unter Windows 10 die integrierte Bash-Funktion verwenden, über die sie jetzt verfügen? DrZoo vor 6 Jahren 0
Das funktioniert auch nicht. Ich kann keine Plugins auf diesem Rechner installieren, deshalb suche ich nach einer Out-of-the-Box-Lösung amallard vor 6 Jahren 0
Im Moment beschäftige ich mich nur mit einer PowerShell-Lösung. Ich habe diesen Kommentar nur dazugelegt, weil ich oft in Linux gearbeitet habe und wollte wissen, wie man etwas Ähnliches macht. Wenn es also eine universelle Lösung gibt, wäre das schön. Aber für das, was ich jetzt versuche, ist es nur eine sofort einsatzbereite PowerShell-Lösung amallard vor 6 Jahren 0

1 Antwort auf die Frage

1
LotPings

Sie wissen nicht, welche PowerShell-Version Sie verwenden ($ PSVersionTable). Die Tabulatorvervollständigung wurde in den letzten Versionen verbessert. Sie funktioniert jedoch in allen Versionen, auch wenn diese je nach Host unterschiedlich ist (Windows / MacOS / Linux).

Das sollte reichen

gci abc*|sl 
  • gciist der Powershell-Alias ​​für Get-ChildItemaka dir / ls
  • (Unter Linux / macOS lswird die Systemversion lswiederhergestellt.)
  • slist Set-Locationähnlichcd
Hinzufügen für zukünftige Benutzer: Wenn Sie nach 'bcd' (in meinem Beispiel) suchen möchten, verwenden Sie: `gci * bcd * | sl` amallard vor 6 Jahren 0