Potřebuji najít nějaké konfigurace zakopané v některých skrytých složkách a nemohu si vzpomenout, kde mají přímo k nim přejít Cmd + Shift + G .
Udělal jsem sudo find -name Foo*
(pomalý), ale žádný z vrácených soubory byly ve skrytých složkách.
Jaký je nejjednodušší způsob prohledávání všech skrytých souborů?
Komentáře
Odpovědět
mdfind
zřejmě ignoruje mnoho skrytých souborů. mdfind "kMDItemFSInvisible==1&&kMDItemFSName==filename"
uvádí seznam .DS_Store
soubory, ale ne například .bash_history
. Nenašel jsem žádný způsob, jak vyhledat soubor s v některých skrytých adresářích, jako je /private/etc/
.
Každopádně Najít libovolný soubor je spousta rychlejší než find
.
Najít libovolný soubor je program pro Mac OS X, který vám umožňuje vyhledávat soubory na vašich discích.
- Na rozdíl od Spotlightu nepoužívá databázi, ale používá ovladač systému souborů „rychlé vyhledávací operace, pokud jsou k dispozici. To vám umožní hledat vlastnosti souboru, jako je název, datum, velikost atd., Ale ne obsah souboru (k tomu použijte Spotlight nebo EasyFind).
- Najít libovolný soubor může najít soubory, které Spotlight nezjistí , např. uvnitř balíčků a balíčků a ve vnitřních složkách, které jsou obvykle z vyhledávání Spotlight vyloučeny.
- Nakonec je to docela rychlé. Hledání trvá jen několik sekund na interním pevném disku nebo SSD. Zkuste sami!
odpověď
Za předpokladu, že „skrytým soubor “máte na mysli soubory, jejichž název začíná tečkou nebo které jsou umístěny někde v adresáři, jehož název začíná tečkou, a nikoli jiné formy neviditelných souborů , následující příkaz vytiskne názvy všech skrytých souborů. Je to pomalé, protože jde o všechny názvy souborů všude ve vašem systému.
sudo find / -name ".*" \( -type d -exec find {} \; -prune -o -print \)
Vysvětlení:
-
-type d -exec find {} \; -prune
provedefind
na každý adresář (jehož název se shodoval.*
) a přeskočí sestup do tohoto adresáře kvůli-prune
. -
-type d … -o -print
způsobí, že budou vytištěny všechny jiné než adresáře, které odpovídají.*
.
Pokud hledáte pro soubor se specifickým názvem nebo vzorem:
sudo find / -name "Foo*" -path "*/.*"
Vzor */.*
na celé cestě síly odpovídá být ve skrytém adresáři.
Možná budete chtít přidat -xdev
za /
, abyste se vyhnuli procházení speciálních souborových systémů a vyměnitelné disky.
Komentáře
- Ah, díky. A vypadá to, že nyní je preferováno -x, protože -xdev je zastaralý.
Odpovědět
Vyzkoušejte locate
příkaz. Nejprve budete muset sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
počkat, až se vygeneruje vyhledávací databáze.
Komentáře
- ' Je to tak nepříjemné, že Spotlight ' t nesbírá skryté / (dot-) soubory, protože mdfind je mnohem lepší než slocate .
Odpověď
EasyFind je vynikající alternativní aplikace pro dokončení práce. Je to zdarma a snadné. Můžete vyhledávat text v souborech (i neviditelných). < = Toto může být jednodušší způsob, jak najít konfigurační soubory.
Můžete jej získat z App Store https://itunes.apple.com/us/app/easyfind/id411673888?mt=12
Zřeknutí se odpovědnosti: Nejsem spojen s vývojářem.
Komentáře
- Na discích ve formátu APFS nefunguje.
Odpověď
ag může vyhledávat skryté soubory podle názvu souboru.
Například:
ag --hidden -g ".swiftlint.yml" ~/
Jak nainstalovat
brew install the_silver_searcher
https://github.com/ggreer/the_silver_searcher
rg je rychlejší než ag.
rg --files --hidden ~/ |rg ".swiftlint.yml"
Jak nainstalovat
brew install ripgrep
https://github.com/BurntSushi/ripgrep
Komentáře
- Jak to pomůže v situaci popsané OP (kdo zjevně nezná ' název skrytých souborů)?
- Funguje to také. Například rg –files –hidden ~ / | rg " .swiftlint * "
Odpověď
Pokud chcete hledat .DS_Store skryté soubory, tento příkaz funguje dobře.
du -a | grep .DS_Store
sudo
je zbytečné, pokud nepotřebujete hledat v adresářích, ke kterým nemáte přístup. Hledání ve skrytých adresářích nevyžaduje zvýšená oprávnění, pokud ' proč se ' používá ve vašem příkladu.