Come si effettua il cd nella prima cartella disponibile senza digitare il nome?


30

Recentemente ero in una situazione in cui mi trovavo all'interno di una cartella e volevo cduna cartella della sottodirectory. C'era solo una cartella, all'interno di questa cartella ed era un nome davvero lungo.

Home (I am here)
 |
 |
  --> /reallylongnamefolder

Esiste un modo per andare in quella cartella invece di digitare:

 cd reallylongnamefolder

1
molti modi: cd */o cd rea*/se non sei sicuro c'è sempre solo 1 sottodir per volta (se usi bash, puoi anche cd rea[TAB]... anche in altre shell ma il modo di espandere il nome può variare). Se "/ reallylongnamefolder" è un percorso assoluto, stessa cosa, ma con "/" davanti, ad esempio:cd /rea*/
Olivier Dulac,

Risposte:


38

Consiglierei di digitare le prime lettere e premere tab. Bash ha la funzione di completamento automatico che è davvero utile. Se è solo la directory nel percorso corrente, basta premere tabper riempire l'intera directory.

Digitando cde premendo tabdue volte verranno visualizzate tutte le opzioni nella directory corrente.

tab è generalmente molto utile in bash poiché hai accesso a quasi tutti gli eseguibili con uno o due tasti premuti.

cd *come suggerito sopra funziona solo se la directory è prima nella lista e non nascosta. Se c'è un file in ordine alfabetico prima della tua directory, questa cdnon cambierà affatto la tua directory.


15
Non dovresti nemmeno dover digitare alcuna lettera, se è presente una sola directory: cd <tab>sarà abbastanza intelligente.
amalloy,

1
Funziona anche in Windows. (per le persone che provengono da Google ..)
Koray Tugay,

16

Penso di averlo effettivamente capito

cd * 
cd */

Ma non l'ho provato se ci sono più file e una cartella!


Come @Rinzwind ha menzionato nei commenti!

Supponiamo che tu abbia tre cartelle lunghe:

 /thisislongfolder1
 /thisislongfolder2
 /thisislongfolder3

Se si digita la prima lettera del file, quindi tabpremere per completare automaticamente il nome del file! ROBA DA MATTI!

Quindi nell'esempio sopra, puoi digitare: t tabe si completerà automaticamente il più possibile: cd thisislongfolder(quindi digita tu stesso il numero).

Oppure puoi farlo ti cd t*1porterebbe dentrothisislongfolder1

Grazie Rinzwind!


6
cd first_letter_or_some_letters e poi {tab} è il più semplice (risolve anche il problema di molte cartelle. Puoi anche mescolare lettere con più di 1 tab e lettere. Il sistema si completerà automaticamente il più possibile. Puoi anche fare cd r*re spero che sia l'unica cartella che inizia e termina con r
Rinzwind

@Rinzwind Eeeek !!! Non lo sapevo! Grazie!
Arian Faurtosh,

Provalo. Aggiungi i tuoi risultati alla tua risposta e probabilmente ne avrai la reputazione ;-)
Rinzwind

4
cd */potrebbe fare il trucco
gniourf_gniourf

3
cd *probabilmente fallisce più spesso di quanto non riesca.
David Richerby,

14
cd $(ls -d */|head -n 1)

ls -d */elenca le directory, head -n 1fornisce la prima in questo elenco.


Sì, e lo scriverai ... Preferirei andare a tab-tab e cercare il nome piuttosto che digitarlo. È corretto al 100%, bella risposta!
tomsmeding

1
@tomsmeding Se stai scrivendo uno script che deve cdessere nella prima directory, non puoi fare tab.
user12205

-n 1 mostra l'ultimo 1 file del file. Se vuoi usarlo per un ordine variabile, puoi usare: cd $ (ls -d -1 * / | sed -n '4p') per aprire la quarta cartella in una directory. L'aggiunta all'alias può renderti più veloce con la navigazione nelle cartelle.
Ivan Ivković,

2

Ho una buona configurazione per questo che mi permette non solo di cd su ~ / somereallylongfoldername ma anche di cd lì anche quando sono nella cartella /

la prima cosa che uso è zsh con oh-my-zsh, questo ti permetterà anche di cd senza doversi preoccupare di case o anche senza digitare cd

  1. installa git e zsh
sudo apt-get install zsh git
  1. installa Oh My ZSH

ricciolo -L http://install.ohmyz.sh | sh

  1. Cambia la shell di default in ZSH
chsh -s /bin/zsh

apri e modifica il tuo .zshrc che si trova nella tua cartella home, non è nascosto

nano ~ / .zshrc

quindi aggiungere la seguente riga nella parte inferiore del file export CDPATH=$CDPATH:/:/home/$USER/:/media/$USER/

Se ti piace il mio tema, puoi anche cambiare la linea #ZSH_THEME="robbyrussell"inZSH_THEME="pygmalion"

Salvare e chiudere il file quindi riavviare. chiudi e riapri la shell o apri una nuova scheda e provala

non puoi usare il tasto tab per completare i nomi e in ZSH non devi nemmeno avere il caso giusto puoi digitare docu e premere tab e lo trasformerà in ~ / Documents

inserisci qui la descrizione dell'immagine


0

È possibile modificare la directory in base al numero di inode.
prima troviamo l'inode con ls -il.
poi

cd $(find -inum directory_inode_number)

0

Se è necessario farlo in uno script o per supportare directory con nomi non decodificabili:

cd $(python -c $'import os\nfor entry in os.listdir(b"."):\n if os.path.isdir(entry):\n  os.write(1, entry);break\nelse: os.write(1, b".")')

Funziona se ci sono file nella directory, indipendentemente dal loro ordinamento rispetto alle directory.
Funziona per le directory nascoste quando cd */fallisce.
Funziona se il nome non è rappresentabile nella locale corrente quando lssi stampa solo al ??posto di un nome.


0

Estendendo la risposta dell'asso:

cd $(ls -d -1 */ |sed -n '1p')

per aprire la prima cartella in una directory. '1p' può essere modificato in '2p' per la seconda directory.

ls -d -1 -la */

per elencare solo le directory da una directory padre.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.