it-swarm.com.de

Wie finde ich eine Datei/ein Verzeichnis, das sich irgendwo in der Linux-Befehlszeile befinden kann?

Idealerweise könnte ich ein Programm gerne verwenden 

find [file or directory name]

um die Pfade mit übereinstimmenden Dateinamen/Verzeichnissen zu melden. Leider scheint dies nur das aktuelle Verzeichnis und nicht den gesamten Ordner zu überprüfen.

Ich habe auch versucht, die zu finden und welche, aber ich finde die Datei nicht, obwohl ich sie irgendwo auf dem Computer kenne.

42
johncorser

Msgstr "Dies scheint leider nur das aktuelle Verzeichnis zu überprüfen, nicht den gesamten Ordner". Vermutlich bedeutet das, dass es nicht in Unterverzeichnissen schaut. Um dies zu beheben, verwenden Sie find -name "filename"

Wenn sich die betreffende Datei nicht im aktuellen Arbeitsverzeichnis befindet, können Sie Ihre gesamte Maschine über durchsuchen 

find / -name "filename"

Das funktioniert auch mit Sachen wie find / -name "*.pdf", etc. Manchmal mag ich das auch in eine grep-Anweisung (da zumindest auf meinem Rechner die Ergebnisse hervorgehoben werden), so dass ich sowas ende 

find / -name "*star*wars*" | grep star

Mit dieser oder einer ähnlichen Methode kann ich den Dateinamen sofort finden und erkennen, ob es sich tatsächlich um die Datei handelt, nach der ich suche.

59
Russell Uhl

Wenn Sie in einigen Verzeichnissen verschachtelt suchen müssen:

find / -type f -wholename "*dirname/filename"

Oder verbundene Verzeichnisse:

find / -type d -wholename "*foo/bar"
6
Andrey

Der Befehl find dauert lange. Die schnellste Suche nach einer Datei erfolgt mit dem Befehl locate, der nach Dateinamen (und Pfad) in einer indizierten Datenbank sucht (aktualisiert mit dem Befehl updatedb).

Das Ergebnis wird sofort mit einem einfachen Befehl angezeigt:

locate {file-name-or-path}

Wenn der Befehl nicht gefunden wird, müssen Sie zunächst das Paket mlocate installieren und zuerst den Befehl updatedb ausführen, um die Suchdatenbank zum ersten Mal vorzubereiten.

Weitere Einzelheiten finden Sie hier: https://medium.com/@thucnc/the-fastest-way-to-find-filesby-filename-mlocate-locate-commands-55bf40b297ab

3
thucnguyen

Sie können stderr nach nirgendwo umleiten, um Berechtigungsfehler (und dergleichen) zu beseitigen

find / -name "something" 2>/dev/null
2
user52028778

Wenn es sich um eine Befehlsdatei handelt, nach der Sie suchen, ist der schnellste und genaueste Weg der mit

which "commandname"

Dadurch wird die tatsächliche Datei angezeigt, die für den Befehl verwendet wird, auch wenn sich auf dem System viele Dateien mit demselben Namen befinden.

0
Douglas Milnes

Das folgende Beispiel hilft, den bestimmten Ordner im aktuellen Verzeichnis zu finden. In diesem Beispiel wird nur das aktuelle Verzeichnis durchsucht, und es wird das im aktuellen Verzeichnis verfügbare Unterverzeichnis durchsucht

#!/bin/bash

result=$(ls -d operational)

echo $result

test="operational"

if [ "$result" == "$test" ] 
then 
   echo "TRUE"
else
   echo "FALSE"
fi