Wie kann man eine CD in den ersten verfügbaren Ordner kopieren, ohne den Namen einzugeben?

30

Ich war vor kurzem in einer misslichen Lage, in der ich mich in einem Ordner befand, und ich wollte cdin einen Unterverzeichnisordner. Es gab nur einen Ordner in diesem Ordner und es war ein sehr langer Name.

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

Gibt es eine Möglichkeit, in diesen Ordner zu wechseln, anstatt Folgendes einzugeben:

 cd reallylongnamefolder
Arian Faurtosh
quelle
1
Viele Möglichkeiten: cd */oder cd rea*/wenn Sie nicht sicher sind, ob es immer nur ein Unterverzeichnis gibt (wenn Sie bash verwenden, können Sie dies auch cd rea[TAB]in anderen Shells tun, aber die Art und Weise, den Namen zu erweitern, kann variieren). Wenn "/ reallylongnamefolder" ein absoluter Pfad ist, dasselbe, aber mit "/" vor, zum Beispiel:cd /rea*/
Olivier Dulac

Antworten:

38

Ich würde entweder raten, die ersten paar Buchstaben einzugeben und zu drücken tab. Bash hat eine Autovervollständigungsfunktion, die wirklich nützlich ist. Befindet sich nur das Verzeichnis im aktuellen Pfad, wird durch Drücken von tabdas gesamte Verzeichnis gefüllt.

Durch zweimaliges Eingeben cdund Drücken tabwerden alle Optionen im aktuellen Verzeichnis angezeigt.

tab ist in der Regel sehr nützlich, da Sie auf fast alle ausführbaren Dateien mit ein oder zwei Tastendrücken zugreifen können.

cd *Wie oben vorgeschlagen, funktioniert dies nur, wenn sich das Verzeichnis an erster Stelle in der Liste befindet und nicht ausgeblendet ist. Befindet sich eine Datei in alphabetischer Reihenfolge vor Ihrem Verzeichnis cd, ändert dies Ihr Verzeichnis überhaupt nicht.

masozravapalma
quelle
15
Sie sollten nicht einmal Buchstaben eingeben müssen, wenn nur ein Verzeichnis vorhanden ist: cd <tab>Wird klug genug sein.
Amalloy
1
Funktioniert auch unter Windows. (für Leute, die von Google kommen ..)
Koray Tugay
16

Ich glaube, ich habe es tatsächlich herausgefunden

cd * 
cd */

Aber ich habe es nicht getestet, wenn es mehrere Dateien und einen Ordner gibt!


Wie @Rinzwind in den Kommentaren erwähnt!

Angenommen, Sie haben drei lange Ordner:

 /thisislongfolder1
 /thisislongfolder2
 /thisislongfolder3

Wenn Sie den ersten Buchstaben der Datei tabeingeben, wird der Dateiname automatisch vervollständigt. VERRÜCKTES ZEUG!

Im obigen Beispiel können t tabSie also Folgendes eingeben : und es wird so viel wie möglich automatisch vervollständigt: cd thisislongfolder( Geben Sie dann die Zahl selbst ein).

Oder du kannst es tun, cd t*1würde dich mitnehmenthisislongfolder1

Danke Rinzwind!

Arian Faurtosh
quelle
6
cd first_letter_or_some_letters und dann {tab} ist die einfachste (löst auch Ihr Problem mit vielen Ordnern. Sie können sogar Buchstaben mit mehr als 1 Tab und Buchstaben mischen. Das System wird so weit wie möglich automatisch vervollständigen. Sie können auch cd r*rund hoffe, es ist der einzige Ordner, der mit R. beginnt und endet
Rinzwind
@ Rinzwind wow! Ich wusste das nicht! Vielen Dank!
Arian Faurtosh
Versuch es.
Wenn
4
cd */könnte den Trick machen
gniourf_gniourf
3
cd *scheitert wahrscheinlich öfter als es gelingt.
David Richerby
14
cd $(ls -d */|head -n 1)

ls -d */listet die Verzeichnisse auf, head -n 1gibt das erste in dieser Liste an.

pastebin.com Schrägstrich 0mr8spkT
quelle
Ja, und Sie werden das eingeben ... Ich gehe lieber zu tab-tab und suche den Namen, als dies einzugeben. Es ist 100% richtig, nette Antwort!
Tomsmeding
1
@tomsmeding Wenn Sie ein Skript schreiben, das cdin das erste Verzeichnis geschrieben werden muss, können Sie keine Tabulatoren erstellen .
pastebin.com Schrägstrich 0mr8spkT
-n 1 zeigt die letzte 1 Datei der Datei. Wenn Sie dies für eine variable Reihenfolge verwenden möchten, können Sie Folgendes verwenden: cd $ (ls -d -1 * / | sed -n '4p'), um den vierten Ordner in einem Verzeichnis zu öffnen. Durch Hinzufügen zu einem Alias ​​können Sie die Ordnernavigation beschleunigen.
Ivan Ivković
2

Ich habe ein nettes Setup dafür, mit dem ich nicht nur ~ / somereallylongfoldername cd, sondern auch cd dorthin, selbst wenn ich mich im / -Ordner befinde

Das erste, was ich benutze, ist zsh mit oh-my-zsh. Dadurch können Sie auch CDs erstellen, ohne sich um die Groß- und Kleinschreibung Gedanken machen zu müssen oder sogar ohne eine CD einzugeben

  1. Installieren Sie Git und Zsh
sudo apt-get install zsh git
  1. installiere Oh My ZSH

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

  1. Ändern Sie die Standardshell in ZSH
chsh -s /bin/zsh

öffne und bearbeite deine .zshrc, die sich in deinem Home-Ordner befindet und nicht versteckt ist

nano ~ / .zshrc

Fügen Sie dann die folgende Zeile am Ende der Datei hinzu export CDPATH=$CDPATH:/:/home/$USER/:/media/$USER/

Wenn Sie mein Thema mögen , können Sie auch die Zeile #ZSH_THEME="robbyrussell"zuZSH_THEME="pygmalion"

Speichern und schließen Sie die Datei und starten Sie sie neu. Schließe die Shell und öffne sie erneut oder öffne einfach eine neue Registerkarte und probiere sie aus

nicht können Sie die Tabulatortaste verwenden, um Namen zu vervollständigen, und in ZSH müssen Sie nicht einmal die richtige Groß- / Kleinschreibung haben, Sie können docu eingeben und die Tabulatortaste drücken und es wird in ~ / Documents umgewandelt

Bildbeschreibung hier eingeben

zeitue
quelle
0

Sie können das Verzeichnis anhand der Inode-Nummer ändern.
Zuerst finden wir die Inode mit ls -il.
dann

cd $(find -inum directory_inode_number)

quelle
0

Wenn Sie dies in einem Skript tun oder Verzeichnisse mit nicht entschlüsselbaren Namen unterstützen müssen:

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

Es funktioniert, wenn sich Dateien im Verzeichnis befinden, unabhängig von ihrer Sortierreihenfolge in Bezug auf Verzeichnisse.
Es funktioniert für versteckte Verzeichnisse, wenn dies cd */fehlschlägt.
Es funktioniert, wenn der Name im aktuellen Gebietsschema nicht darstellbar ist, wenn lsnur ??anstelle eines Namens gedruckt wird .

jfs
quelle
0

Erweitere die Antwort von Ass:

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

um den 1. Ordner in einem Verzeichnis zu öffnen. '1p' kann für das zweite Verzeichnis in '2p' geändert werden.

ls -d -1 -la */

um nur Verzeichnisse aus einem übergeordneten Verzeichnis aufzulisten.

Ivan Ivković
quelle