GNU/Linux >> Znalost Linux >  >> Linux

Vyloučit cesty, kvůli kterým si Find stěžuje na oprávnění?

Potřebuji vygenerovat seznam souborů z diskového svazku. Některé z adresářů (všechny skryté adresáře v kořenovém adresáři) mají podivná oprávnění, která způsobují stížnosti find.

Snažím se vyloučit všechny tyto cesty, ale jeden adresář si stále stěžuje:

find . -type f -not -path './.*/*'
find: ./.DocumentRevisions-V100: Permission denied

Práva jsou takto (nastavena operačním systémem, takže předpokládám, že by se s nimi nemělo zaměňovat).

d--x--x--x root  wheel   .DocumentRevisions-V100

Jak změním find příkaz účinně vynechat všechny skryté adresáře, abyste si nestěžovali. (Nechci dělat 2>/dev/null jak chci vědět o jiných problémech).

Přijatá odpověď:

Pomocí GNU find nebo jakéhokoli jiného hledání, které podporuje -readable a -executable predikáty:

find . -type d ! ( -readable -executable ) -prune -o -type f -not -path './.*/*' -print

Nejprve ořízneme adresáře, které nelze procházet. Pokud tato podmínka neplatí, zkuste jiné podmínky.

Pokud váš find nemá tyto možnosti, můžete je porovnávat s oprávněními souboru.

find . -type d ! -perm -u+rx -prune -o -type f ! -path './.*/*' -print

Linux
  1. Jak auditovat oprávnění pomocí příkazu find

  2. Vyloučit seznam adresářů z Unixového příkazu Najít?

  3. Jak vyloučím absolutní cesty pro tar?

  1. Jak vyloučit adresář v find . příkaz

  2. find:cesty musí předcházet výrazu:Jak určím rekurzivní vyhledávání, které také najde soubory v aktuálním adresáři?

  3. rekurzivní grep:vyloučení konkrétních adresářů

  1. Najít soubory, které uživatel nemůže číst?

  2. Nalezení adresáře v linuxovém terminálu

  3. Jak zajistím, aby hledání vyloučilo složku, ve které hledá?