Wie suche ich mit Terminal nach allen versteckten Dateien, die sich in versteckten Ordnern befinden?

Ich muss einige Konfigurationen finden, die in einigen versteckten Ordnern vergraben sind, und kann mich nicht erinnern, wo sie direkt zu ihnen navigieren sollen Cmd+ Shift+ G.

Ich habe a sudo find -name Foo*(langsam) gemacht, aber keine der zurückgegebenen Dateien befand sich in versteckten Ordnern.

Was ist der einfachste Weg, um alle versteckten Dateien zu durchsuchen?

Hinweis: Die Verwendung sudoist nicht erforderlich, es sei denn, Sie müssen in Verzeichnissen suchen, auf die Sie keinen Zugriff haben. Die Suche in versteckten Verzeichnissen erfordert keine erhöhten Berechtigungen, falls dies der Grund dafür ist, dass es in Ihrem Beispiel verwendet wird.

Antworten (6)

mdfindscheint viele versteckte Dateien zu ignorieren. mdfind 'kMDItemFSInvisible==1&&kMDItemFSName==filename'listet .DS_StoreDateien auf, aber nicht zum Beispiel .bash_history. Ich habe keine Möglichkeit gefunden, in einigen versteckten Verzeichnissen wie /private/etc/.

Auf jeden Fall ist Find Any File viel schneller als find.

Find Any File ist ein Programm für Mac OS X, mit dem Sie nach Dateien auf Ihren Festplatten suchen können.

  • Im Gegensatz zu Spotlight verwendet es keine Datenbank, sondern verwendet die schnellen Suchoperationen des Dateisystemtreibers, sofern verfügbar. Auf diese Weise können Sie nach Dateieigenschaften wie Name, Datum, Größe usw. suchen, aber nicht nach Dateiinhalten (verwenden Sie dafür Spotlight oder EasyFind).
  • Find Any File kann Dateien finden, die Spotlight nicht findet, z. B. solche in Bundles und Paketen und in Ordnern, die normalerweise von der Spotlight-Suche ausgeschlossen sind.
  • Schließlich ist es ziemlich schnell. Auf einer internen Festplatte oder SSD dauert eine Suche nur wenige Sekunden. Probieren Sie es selbst aus!

Angenommen, Sie meinen mit „versteckte Datei“ Dateien, deren Name mit einem Punkt beginnt oder die sich irgendwo unter einem Verzeichnis befinden, dessen Name mit einem Punkt beginnt, und keine anderen Formen von unsichtbaren Dateien , gibt der folgende Befehl die Namen aller versteckten Dateien aus. Es ist langsam, da es alle Dateinamen überall auf Ihrem System durchläuft.

sudo find / -name '.*' \( -type d -exec find {} \; -prune -o -print \)

Erläuterung:

  • -type d -exec find {} \; -prunewird findin jedem Verzeichnis ausgeführt (dessen Name mit übereinstimmt .*) und überspringt den Abstieg in dieses Verzeichnis aufgrund der -prune.
  • -type d … -o -printbewirkt, dass alle übereinstimmenden Nicht-Verzeichnisse .*gedruckt werden.

Wenn Sie nach einer Datei mit einem bestimmten Namen oder Muster suchen:

sudo find / -name 'Foo*' -path '*/.*'

Das */.*Muster auf dem gesamten Pfad erzwingt Übereinstimmungen unter einem versteckten Verzeichnis.

Möglicherweise möchten Sie nach -xdevdem hinzufügen /, um zu vermeiden, dass spezielle Dateisysteme und Wechseldatenträger durchlaufen werden.

Ah danke. Und es sieht so aus, als ob -x jetzt bevorzugt wird, da -xdev veraltet ist.

Probieren Sie den locateBefehl aus. Sie müssen sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plistzuerst warten, bis die Lokalisierungs-DB generiert wird.

Es ist so lästig, dass Spotlight keine versteckten / (Punkt-)Dateien findet, weil mdfind slocate weit überlegen ist.
In neueren macOS-Versionen ist dies keine wirkliche Lösung mehr – der Befehl locate.updatedb wird mit dem Benutzer none ausgeführt , der keine Berechtigung zum Anzeigen von Dateien in den Home-Verzeichnissen der Benutzer hat, was die meisten Benutzer wahrscheinlich möchten

EasyFind ist eine ausgezeichnete alternative App, um die Arbeit zu erledigen. Es ist kostenlos und einfach. Sie können in Dateien (sogar unsichtbaren) nach Text suchen. <= Dies ist möglicherweise eine einfachere Möglichkeit, Ihre Konfigurationsdateien zu finden.

Sie erhalten es im App Store https://itunes.apple.com/us/app/easyfind/id411673888?mt=12

Haftungsausschluss: Ich bin nicht mit dem Entwickler verbunden.

Funktioniert nicht auf APFS-formatierten Laufwerken.

ag kann versteckte Dateien anhand des Dateinamens durchsuchen.

Zum Beispiel:

ag --hidden -g ".swiftlint.yml" ~/

Wie installiert man

brew install the_silver_searcher

https://github.com/ggreer/the_silver_searcher

rg ist schneller als ag.

rg --files --hidden ~/ |rg  ".swiftlint.yml"

Wie installiert man

brew install ripgrep

https://github.com/BurntSushi/ripgrep

Wie hilft dies in der vom OP beschriebenen Situation (der den Namen der versteckten Dateien anscheinend nicht kennt)?
Es funktioniert auch. Zum Beispiel rg --files --hidden ~/ |rg ".swiftlint*"

Wenn Sie versteckte .DS_Store- Dateien suchen möchten, funktioniert dieser Befehl gut.

du -a | grep .DS_Store