GNU/Linux >> Linux Esercitazione >  >> Linux

Trova il file quindi cd in quella directory in Linux

Quanto segue dovrebbe essere più sicuro:

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

Vantaggi:

  • Il doppio trattino impedisce l'interpretazione di un nome di directory che inizia con un trattino come opzione (find non produce tali nomi di file, ma non è dannoso e potrebbe essere richiesto per costrutti simili)
  • -name controlla prima del -type controlla perché quest'ultimo a volte richiede un stat
  • No dirname richiesto perché %h specificatore stampa già il nome della directory
  • -quit per interrompere la ricerca dopo il primo file trovato, quindi nessun head richiesto che causerebbe il fallimento dello script sui nomi di directory contenenti newline

Puoi usare qualcosa come:

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

Questo individuerà il primo ls file normale quindi passa a quella directory.

In termini di cosa fa ogni bit:

  • La ricerca inizierà da / e cerca verso il basso, elencando tutti i file regolari (-type f ) chiamato ls (-name ls ). Ci sono altre cose che puoi aggiungere a find per limitare ulteriormente i file che ottieni.
  • Il piping attraverso head -1 filtrerà tutto tranne il primo.
  • $() è un modo per prendere l'output di un comando e metterlo nella riga di comando per un altro comando.
  • dirname può prendere una specifica completa del file e darti il ​​bit del percorso.
  • cd cambia solo in quella directory.

Se esegui ogni bit in sequenza, puoi vedere cosa succede:

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. Come trovare un file in Linux

  2. Come trovare un file in Linux in tutte le directory in modo ricorsivo

  3. Linux – Scopo della directory /net?

  4. Ottieni il file più recente in una directory su Linux

  5. Come posso trovare un file/directory che potrebbe trovarsi ovunque sulla riga di comando di Linux?

Come trovare una stringa in un file su Linux

Autorizzazioni Linux:come trovare le autorizzazioni di un file

Come trovare file basati su timestamp in Linux

Come trovare la dimensione totale di una directory in Linux

Come trovare le righe più lunghe in un file in Linux

Il comando Trova Directory di Linux:spiegato