Jak przejść do pierwszego dostępnego folderu bez wpisywania nazwy?


30

Byłem ostatnio w trudnej sytuacji, gdy byłem w folderze i chciałem przejść cddo folderu podkatalogu. W tym folderze był tylko jeden folder i była to naprawdę długa nazwa.

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

Czy istnieje jakiś sposób na przejście do tego folderu zamiast wpisywania:

 cd reallylongnamefolder

1
na wiele sposobów: cd */lub cd rea*/jeśli nie masz pewności, że przez cały czas jest tylko 1 podkatalog (jeśli używasz bash, możesz również cd rea[TAB].. w innych powłokach, ale sposób na rozszerzenie nazwy może się różnić). Jeśli „/ reallylongnamefolder” jest ścieżką absolutną, to samo, ale z „/” z przodu, na przykład:cd /rea*/
Olivier Dulac

Odpowiedzi:


38

Radziłbym albo wpisać kilka pierwszych liter i nacisnąć tab. Bash ma funkcję autouzupełniania, która jest naprawdę przydatna. Jeśli jest to tylko katalog w bieżącej ścieżce, wystarczy nacisnąć, tababy wypełnić cały katalog.

Wpisanie cdi tabdwukrotne naciśnięcie spowoduje wyświetlenie wszystkich opcji w bieżącym katalogu.

tab jest ogólnie bardzo przydatny w bashu, ponieważ masz dostęp do prawie wszystkich plików wykonywalnych za jednym lub dwoma naciśnięciami klawiszy.

cd *jak sugerowano powyżej, działa tylko wtedy, gdy katalog jest pierwszy na liście i nie jest ukryty. Jeśli przed katalogiem znajduje się plik alfabetycznie cd, nie zmieni to wcale katalogu.


15
Nie powinieneś nawet wpisywać żadnych liter, jeśli jest tylko jeden katalog: cd <tab>będzie wystarczająco inteligentny.
amalloy

1
Działa również w systemie Windows. (dla osób, które pochodzą z Google ..)
Koray Tugay

16

Chyba właściwie to rozgryzłem

cd * 
cd */

Ale nie przetestowałem tego, jeśli jest wiele plików i jeden folder!


Jak wspomniano w komentarzach @Rinzwind !

Załóżmy, że masz trzy długie foldery:

 /thisislongfolder1
 /thisislongfolder2
 /thisislongfolder3

Jeśli wpiszesz pierwszą literę pliku, a następnie wciśnij tabto automatycznie uzupełni nazwę pliku! ZWARIOWANE RZECZY!

Tak więc w powyższym przykładzie możesz wpisać t tab:, a autouzupełnianie tyle, ile będzie w stanie: cd thisislongfolder(następnie wpisz numer samodzielnie).

Albo można zrobić cd t*1by zabrać cię dothisislongfolder1

Dziękuję Rinzwind!


6
cd first_letter_or_some_letters, a następnie {tab} jest najłatwiejszy (rozwiązuje również problem wielu folderów. Możesz nawet mieszać litery z więcej niż 1 tabulatorem i literami. System uzupełni się automatycznie, o ile to możliwe. Możesz także zrobić cd r*ri mam nadzieję, że to jedyny folder rozpoczynający się i kończący na r.
Rinzwind

@Rinzwind wow! Nie wiedziałem tego! dzięki!
Arian Faurtosh

Wypróbuj to. Dodaj swoje wyniki do swojej odpowiedzi, a prawdopodobnie zyskasz trochę reputacji ;-)
Rinzwind

4
cd */może załatwić
sprawę

3
cd *prawdopodobnie zawodzi częściej niż się to udaje.
David Richerby

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

ls -d */wyświetla katalogi, head -n 1podaje pierwszy z tej listy.


Tak, a ty zamierzasz wpisać ... Wolałbym przejść do tab-tab i wyszukać nazwę niż wpisać to. Jest w 100% poprawna, fajna odpowiedź!
tomsmeding

1
@tomsmeding Jeśli piszesz skrypt, który musi przejść cddo pierwszego katalogu, nie możesz używać zakładek.
user12205,

-n 1 pokazuje ostatni 1 plik pliku. Jeśli chcesz użyć tego w zmiennej kolejności, możesz użyć: cd $ (ls -d -1 * / | sed -n '4p'), aby otworzyć 4. folder w katalogu. Dodanie go do aliasu może przyspieszyć nawigację w folderach.
Ivan Ivković

2

Mam do tego niezłą konfigurację, która pozwala mi nie tylko cd do ~ / somereallylongfoldername, ale także cd do tam, nawet gdy jestem w folderze /

pierwszą rzeczą, której używam jest zsh z oh-my-zsh, to pozwoli ci również na cd bez martwienia się o wielkość liter lub nawet bez wpisywania cd

  1. zainstaluj git i zsh
sudo apt-get install zsh git
  1. zainstaluj Oh My ZSH

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

  1. Zmień domyślną powłokę na ZSH
chsh -s /bin/zsh

otwórz i edytuj .zshrc, który znajduje się w folderze domowym, a nie jest ukryty

nano ~ / .zshrc

następnie dodaj następujący wiersz na dole pliku export CDPATH=$CDPATH:/:/home/$USER/:/media/$USER/

Jeśli podoba Ci się mój motyw, możesz również zmienić linię #ZSH_THEME="robbyrussell"naZSH_THEME="pygmalion"

Zapisz i zamknij plik, a następnie uruchom ponownie tj. zamknij i ponownie otwórz powłokę lub po prostu otwórz nową kartę i wypróbuj ją

nie, możesz użyć klawisza Tab, aby uzupełnić nazwy, aw ZSH nie musisz nawet mieć właściwej litery, możesz wpisać docu i nacisnąć Tab, a to zamieni je w ~ / Dokumenty

wprowadź opis zdjęcia tutaj


0

Możesz zmienić katalog według numeru i-węzła.
najpierw znajdujemy i-węzeł z ls -il.
następnie

cd $(find -inum directory_inode_number)

0

Jeśli musisz to zrobić w skrypcie lub w celu obsługi katalogów o niezdefiniowanych nazwach:

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

Działa, jeśli w katalogu znajdują się pliki, niezależnie od ich kolejności sortowania względem katalogów.
Działa w przypadku ukrytych katalogów, gdy cd */zawodzi.
Działa, jeśli nazwa nie jest reprezentowalna w bieżących ustawieniach narodowych, gdy lsdrukuje się tylko ??zamiast nazwy.


0

Rozszerzając na odpowiedź asa:

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

aby otworzyć 1. folder w katalogu. „1p” można zmienić na „2p” dla drugiego katalogu.

ls -d -1 -la */

aby wyświetlić tylko katalogi z katalogu nadrzędnego.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.