GNU/Linux >> Znalost Linux >  >> Linux

Najděte soubor a poté cd do tohoto adresáře v Linuxu

Následující by mělo být bezpečnější:

cd -- "$(find / -name ls -type f -printf '%h' -quit)"

Výhody:

  • Dvojitá pomlčka brání interpretaci názvu adresáře začínajícího pomlčkou jako možnost (find nevytváří takové názvy souborů, ale není škodlivý a může být vyžadován pro podobné konstrukce)
  • -name zkontrolujte před -type zaškrtněte, protože ten někdy vyžaduje stat
  • Ne dirname vyžadováno, protože %h specifier již vypisuje název adresáře
  • -quit pro zastavení hledání po prvním nalezeném souboru, tedy žádné head což by způsobilo selhání skriptu u názvů adresářů obsahujících nové řádky

Můžete použít něco jako:

pax[/home/pax]> cd "$(dirname "$(find / -type f -name ls | head -1)")"
pax[/usr/bin]> _

Tím se najde první ls běžný soubor a poté přejděte do tohoto adresáře.

Z hlediska toho, co každý bit dělá:

  • Nález začne na / a prohledejte seznam všech běžných souborů (-type f ) s názvem ls (-name ls ). Do find můžete přidat další věci k dalšímu omezení souborů, které získáte.
  • Potrubí přes head -1 odfiltruje všechny kromě prvního.
  • $() je způsob, jak vzít výstup příkazu a vložit jej na příkazový řádek pro další příkaz.
  • dirname může převzít úplnou specifikaci souboru a poskytnout vám bit cesty.
  • cd pouze změní tento adresář.

Pokud provedete každý bit v sekvenci, uvidíte, co se stane:

pax[/home/pax]> find / -type f -name ls
/usr/bin/ls

pax[/home/pax]> find / -type f -name ls | head -1
/usr/bin/ls

pax[/home/pax]> dirname "$(find / -type f -name ls | head -1)"
/usr/bin

pax[/home/pax]> cd "$(dirname "$(find / -type f -name ls | head -1)")"

pax[/usr/bin]> _

Linux
  1. Cheat sheet pro oprávnění k souborům/adresáři pro Linux

  2. Získejte nejnovější soubor v adresáři v systému Linux

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

  1. Jak najít soubor v Linuxu

  2. Jak najít soubor v Linuxu ve všech adresářích rekurzivně

  3. Jak zkopíruji soubor/složku z domovského adresáře jiného uživatele v Linuxu?

  1. Jak najít balíček, který poskytuje konkrétní soubor v Linuxu

  2. Jak najít nejstarší soubor ve stromu adresářů v Linuxu

  3. Linux – Jak zjistit datum vytvoření souboru?