Ich benutze den Befehl find für die Suche in großen und verschachtelten Verzeichnisstrukturen.
In der Ergebnisausgabe ist manchmal ein doppelter Schrägstrich (//) enthalten.
Beispiel (nach "Downloads"):
#> find ~/Downloads/ -iregex ".*some.*"
/Users/michael/Downloads//subDirectory/some_file.pdf
Ich dachte zuerst, es würde das aktuelle Arbeitsverzeichnis markieren. Das ist aber nicht der Fall.
Was bedeutet dieser doppelte Schrägstrich?
Normalerweise kopiere ich das Ergebnis in die Zwischenablage und wechsle zum Finder. Dann "verschieben" + "Befehl" + "g" und den Pfad (bis zur Datei) in die Box einfügen. Damit wird das enthaltende Verzeichnis geöffnet.
Funktioniert gut. Aber den doppelten Schrägstrich muss ich manuell entfernen.
Deshalb: Wie kann ich das vermeiden?
Antworten:
find
ist eher wörtlich. Wenn Sie es anweisen, in "~ / Downloads /" zu suchen, wird es (einschließlich des abschließenden Schrägstrichs) als Präfix für alles verwendet, was es findet. Da am Ende des von Ihnen angegebenen Pfads ein unnötiger und irrelevanter Schrägstrich angezeigt wird, wird die Ausgabe mit einem unnötigen und irrelevanten zusätzlichen Schrägstrich versehen.Lösung: Entfernen Sie das nachfolgende "/" aus dem Suchverzeichnis:
quelle
Bedeutet, dass Sie einen seltsamen alten BSD-Fund verwenden.
Sie können den abschließenden Schrägstrich in Ihrem ursprünglichen Befehl zwar weglassen, aber da er automatisch über die Tab-Vervollständigung hinzugefügt wird (die Sie auf jeden Fall so gut wie möglich nutzen sollten) und der abschließende Schrägstrich tatsächlich an unzähligen Stellen an anderer Stelle verwendet wird, um sicherzugehen, dass Sie Es handelt sich um ein Verzeichnis und nicht um einen Dateinamen. Das Weglassen ist nicht intuitiv und albern.
Stattdessen schlage ich vor, eines dieser anderen Dinge zu tun:
a) Machen Sie eine Hülle, um herauszufinden, welche Rohre sed: | sed 's @ // @ / @'
b) Installieren Sie die Findutils von GNU mit 'Brew Install Findutils' und verwenden Sie dann entweder 'gfind' direkt, den Alias 'find' zu 'gfind' oder fügen Sie Ihrem Pfad / usr / local / opt / findutils / libexec / gnubin hinzu (was ebenfalls hinzugefügt wird) GNU findutils '' Locate '', 'Updatedb' & 'Xargs').
c) Wechseln Sie zu einem geeigneten GNU / Linux-Betriebssystem, das dieses Problem (und tausend andere) überhaupt nicht gehabt hätte. : p
quelle
set mark-directories off
Sie einfach zu Ihrem hinzu.inputrc
und du bist gut zu gehen. Von einem dieser alten BSD-Leute.