Como você entra na primeira pasta disponível sem digitar o nome?

30

Recentemente, eu estava em uma situação em que estava dentro de uma pasta e queria cdacessar uma pasta de subdiretório. Havia apenas uma pasta dentro dessa pasta e era um nome muito longo.

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

Existe alguma maneira de entrar nessa pasta em vez de digitar:

 cd reallylongnamefolder
Arian Faurtosh
fonte
1
de várias maneiras: cd */ou cd rea*/se não tiver certeza, há apenas 1 subdir o tempo todo (se estiver usando o bash, você também pode cd rea[TAB].. em outros shells, mas a maneira de expandir o nome pode variar). Se "/ reallylongnamefolder" é um caminho absoluto, a mesma coisa, mas com '/' na frente, por exemplo:cd /rea*/
Olivier Dulac

Respostas:

38

Eu recomendaria digitar as primeiras letras e pressionar tab. O Bash possui o recurso de preenchimento automático que é realmente útil. Se for apenas o diretório no caminho atual, apenas pressionar tabirá preencher o diretório inteiro.

Digitar cde pressionar tabduas vezes exibirá todas as opções no diretório atual.

tab geralmente é realmente útil no bash, pois você pode acessar quase todos os executáveis ​​com um ou dois pressionamentos de tecla.

cd *como sugerido acima, funciona apenas se o diretório for o primeiro na lista e não estiver oculto. Se houver um arquivo em ordem alfabética antes do seu diretório, isso cdnão mudará seu diretório.

masozravapalma
fonte
15
Você nem precisa digitar nenhuma letra, se houver apenas um diretório presente: cd <tab>será inteligente o suficiente.
precisa saber é
1
Funciona no Windows também. (Para as pessoas que vêm do Google ..)
Koray Tugay
16

Eu acho que realmente descobri

cd * 
cd */

Mas não testei se houver vários arquivos e uma pasta!


Como @Rinzwind mencionado nos comentários!

Digamos que você tenha três pastas longas:

 /thisislongfolder1
 /thisislongfolder2
 /thisislongfolder3

Se você digitar a primeira letra do arquivo, pressione tab-o para completar automaticamente o nome do arquivo! COISAS DOIDAS!

Portanto, no exemplo acima, você pode digitar: t tabe ele será preenchido automaticamente o máximo que puder: cd thisislongfolder(digite o número você mesmo).

Ou você pode fazer cd t*1iria levá-lo parathisislongfolder1

Obrigado Rinzwind!

Arian Faurtosh
fonte
6
first_letter_or_some_letters CD e depois {tab} é o mais fácil (também resolve o seu problema de lotes de pastas. Você pode cartas, mesmo misturados com mais de 1 guia e letras. O sistema de auto-completar, tanto quanto ele pode. Você também pode fazer cd r*re espero que seja o início única pasta e terminando com r.
Rinzwind
@Rinzwind wow! Eu não sabia disso! obrigado!
Arian Faurtosh
Experimente. Adicionar os seus resultados para a sua resposta e você provavelmente vai ter alguma reputação para ele ;-)
Rinzwind
4
cd */pode fazer o truque
gniourf_gniourf
3
cd *provavelmente falha mais frequentemente do que consegue.
David Richerby
14
cd $(ls -d */|head -n 1)

ls -d */lista os diretórios, head -n 1fornece o primeiro nesta lista.

user12205
fonte
Sim, e você digitará isso ... Prefiro tab-tab e procure o nome do que digitando isso. É 100% correto, boa resposta!
tomsmeding
1
@tomsmeding Se você está escrevendo um script que precisa ir cdpara o primeiro diretório, não pode fazer abas.
user12205
-n 1 mostra o último 1 arquivo do arquivo. Se você quiser usar isso para uma ordem variável, poderá usar: cd $ (ls -d -1 * / | sed -n '4p') para abrir a quarta pasta em um diretório. Adicioná-lo ao alias pode acelerar sua navegação na pasta.
Ivan Ivković
2

Eu tenho uma boa configuração para isso, me permite não apenas fazer o cd para ~ / somereallylongfoldername, mas também fazer o cd até mesmo quando estou na pasta /

a primeira coisa que eu uso é zsh com oh-my-zsh, isso também permite que você faça um cd sem ter que se preocupar com o caso ou mesmo sem digitar cd

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

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

  1. Mude o shell padrão para ZSH
chsh -s /bin/zsh

abra e edite o arquivo .zshrc localizado na sua pasta pessoal, não oculto

nano ~ / .zshrc

adicione a seguinte linha na parte inferior do arquivo export CDPATH=$CDPATH:/:/home/$USER/:/media/$USER/

Se você gosta do meu tema, também pode alterar a linha #ZSH_THEME="robbyrussell"paraZSH_THEME="pygmalion"

Salve e feche o arquivo e reinicie, ie. feche e reabra o shell ou simplesmente abra uma nova guia e experimente

você não pode usar a tecla tab para completar os nomes e no ZSH você nem precisa ter o caso certo, você pode digitar docu e pressionar tab e ele a transformará em ~ / Documents

insira a descrição da imagem aqui

zeitue
fonte
0

Você pode alterar o diretório pelo número do inode.
primeiro encontramos o inode com ls -il.
então

cd $(find -inum directory_inode_number)

fonte
0

Se você precisar fazer isso em um script ou suportar diretórios com nomes não codificáveis:

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".")')

Funciona se houver arquivos no diretório, independentemente de sua ordem de classificação em relação aos diretórios.
Funciona para diretórios ocultos quando cd */falha.
Funciona se o nome não é representável no código do idioma atual quando lsé impresso apenas em ??vez de um nome.

jfs
fonte
0

Estendendo a resposta do ás:

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

para abrir a 1ª pasta em um diretório. '1p' pode ser alterado para '2p' para o segundo diretório.

ls -d -1 -la */

para listar apenas diretórios de um diretório pai.

Ivan Ivković
fonte