Jeg har brug for at finde nogle konfigurationer begravet i nogle skjulte mapper og kan ikke huske, hvor de skal navigere direkte til dem Cmd + Skift + G .

Jeg lavede en sudo find -name Foo* (langsom), men ingen af de returnerede filer var i skjulte mapper.

Hvad er den nemmeste måde at søge i alle skjulte filer?

Kommentarer

  • Bemærk: Brug sudo er unødvendig, medmindre du har brug for at søge i kataloger, som du ikke har adgang til. Søgning i skjulte mapper kræver ikke forhøjede rettigheder, hvis det ' s hvorfor det ' bruges i dit eksempel.

Svar

mdfind ser ud til at ignorere mange skjulte filer. mdfind "kMDItemFSInvisible==1&&kMDItemFSName==filename" viser listen .DS_Store filer, men ikke for eksempel .bash_history. Jeg har ikke fundet nogen måde at søge efter fil s i nogle skjulte mapper som /private/etc/.

Alligevel er Find enhver fil meget hurtigere end find.

Find Any File er et program til Mac OS X, der giver dig mulighed for at søge efter filer på dine diske.

  • I modsætning til Spotlight bruger den ikke en database, men bruger i stedet filsystemdriveren “hurtige søgefunktioner, hvor de er tilgængelige. Dette giver dig mulighed for at søge efter filegenskaber som navn, datoer, størrelse osv., Men ikke efter filindhold (brug Spotlight eller EasyFind til det).
  • Find enhver fil kan finde filer, som Spotlight ikke “t f.eks. inden i bundter og pakker og i indvendige mapper, der normalt ikke er omfattet af Spotlight-søgning.
  • Endelig er det ret hurtigt. En søgning tager kun et par sekunder på en intern harddisk eller SSD. Prøv efter dig selv!

Svar

Forudsat at ved “skjult fil ”du mener filer, hvis navn begynder med en prik, eller som findes et eller andet sted under en mappe, hvis navn begynder med en prik, og ikke andre former for usynlige filer , følgende kommando udskriver navnene på alle skjulte filer. Det er langsomt, da det går over alle filnavne overalt på dit system.

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

Forklaring:

  • -type d -exec find {} \; -prune udfører find på hver mappe (hvis navn matchede .*), og springer nedad i denne mappe på grund af -prune.
  • -type d … -o -print får alle ikke-mapper, der matcher .*, til at blive udskrevet.

Hvis du kigger efter for en fil med et specifikt navn eller mønster:

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

*/.* mønsteret på hele stien tvinger match til være under en skjult mappe.

Det kan være en god idé at tilføje -xdev efter / for at undgå at krydse specielle filsystemer og flytbare diske.

Kommentarer

  • Ah, tak. Og det ser ud til, at -x foretrækkes nu, da -xdev er udfaset.

Svar

Prøv locate kommando. Du skal først sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist og vente på, at lokaliserings-DB genereres.

Kommentarer

  • Det ' er sådan en gener, at Spotlight ikke ' t henter skjulte / (dot-) filer, fordi mdfind er langt bedre end at placere .

Svar

EasyFind er en fremragende alternativ app til at få arbejdet gjort. Det er gratis og nemt. Du kan søge efter tekst i filer (også usynlige). < = Dette kan være en lettere måde at finde dine konfigurationsfiler på.

Du kan få det fra App Store https://itunes.apple.com/us/app/easyfind/id411673888?mt=12

Ansvarsfraskrivelse: Jeg er ikke tilknyttet udvikleren.

Kommentarer

  • Virker ikke på APFS-formaterede drev.

Svar

ag kan søge skjulte filer efter filnavn.

For eksempel:

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

Sådan installeres

brew install the_silver_searcher 

https://github.com/ggreer/the_silver_searcher

rg er hurtigere end ag.

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

Sådan installeres

brew install ripgrep 

https://github.com/BurntSushi/ripgrep

Kommentarer

  • Hvordan hjælper dette i situationen beskrevet af OP (der tilsyneladende ikke ' ikke kender navnet på de skjulte filer)?
  • Det virker såvel. For eksempel rg –files –hidden ~ / | rg " .swiftlint * "

Svar

Hvis du vil søge .DS_Store skjulte filer, denne kommando fungerer godt.

du -a | grep .DS_Store 

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *