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.
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.
Wenn Sie in einigen Verzeichnissen verschachtelt suchen müssen:
find / -type f -wholename "*dirname/filename"
Oder verbundene Verzeichnisse:
find / -type d -wholename "*foo/bar"
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
Sie können stderr nach nirgendwo umleiten, um Berechtigungsfehler (und dergleichen) zu beseitigen
find / -name "something" 2>/dev/null
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.
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