Как вы попадаете в первую доступную папку, не вводя название?

30

Недавно я был в затруднительном положении, когда я был в папке, и я хотел, чтобы cdв папке подкаталога. Внутри этой папки была только одна папка, и это было действительно длинное имя.

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

Есть ли способ войти в эту папку вместо ввода:

 cd reallylongnamefolder
Ариан Фауртош
источник
1
разными способами: cd */или cd rea*/если вы не уверены, что всегда есть только 1 subdir (при использовании bash вы также можете cd rea[TAB]… и в других оболочках, но способ расширения имени может отличаться). Если «/ reallongnamefolder» - это абсолютный путь, то же самое, но с «/» впереди, например:cd /rea*/
Оливье Дюлак

Ответы:

38

Я бы посоветовал либо набрать первые несколько букв и нажать tab. Bash имеет функцию автозаполнения, которая действительно полезна. Если это только каталог в текущем пути, просто нажатие tabзаполнит весь каталог.

При вводе cdи двойном нажатии tabотобразятся все параметры в текущем каталоге.

tab как правило, действительно полезен в bash, так как вы можете использовать практически все исполняемые файлы одним или двумя нажатиями клавиш.

cd *как предложено выше, работает, только если каталог находится первым в списке и не скрыт. Если перед вашим каталогом есть файл в алфавитном порядке, это cdвообще не изменит ваш каталог.

masozravapalma
источник
15
Вам даже не нужно вводить какие-либо буквы, если есть только один каталог: cd <tab>он будет достаточно умен.
Амаллой
1
Работает и в Windows. (для людей, которые приходят из Google ..)
Корай Тугай
16

Я думаю, что я на самом деле понял это на самом деле

cd * 
cd */

Но я не проверял, есть ли несколько файлов и одна папка!


Как @Rinzwind упоминается в комментариях!

Допустим, у вас есть три длинные папки:

 /thisislongfolder1
 /thisislongfolder2
 /thisislongfolder3

Если вы введете первую букву файла, то нажмите на tabнее, чтобы автоматически завершить имя файла! Сумасшедший персонал!

Таким образом, в приведенном выше примере вы можете ввести: t tabи он будет автоматически заполнять столько, сколько может: cd thisislongfolder(затем введите число самостоятельно).

Или вы можете сделать cd t*1, взял бы вас вthisislongfolder1

Спасибо, Ринзвинд!

Ариан Фауртош
источник
6
cd first_letter_or_some_letters, а затем {tab} является самым простым (также решает вашу проблему с большим количеством папок. Вы можете даже смешать буквы с более чем 1 вкладкой и буквами. Система выполнит автозаполнение настолько, насколько это возможно. Вы также можете сделать cd r*rи надеюсь, что это единственная папка, начинающаяся и оканчивающаяся на r
Rinzwind
@ Rinzwind вау! Я этого не знал! Благодарность!
Ариан Фауртош
Попробуйте это. Добавьте свои результаты в свой ответ, и вы, вероятно, получите некоторую репутацию за него ;-)
Rinzwind
4
cd */может сделать
свое дело
3
cd *вероятно, терпит неудачу чаще, чем успешно.
Дэвид Ричерби
14
cd $(ls -d */|head -n 1)

ls -d */перечисляет каталоги, head -n 1дает первый в этом списке.

user12205
источник
Да, и ты собираешься напечатать это ... Я бы предпочел перейти на вкладку и посмотреть имя, чем печатать это. Хотя это на 100% правильно, хороший ответ!
Томсминг
1
@tomsmeding Если вы пишете скрипт, который нужен для cdпервого каталога, вы не можете делать вкладки.
user12205
-n 1 показывает последний 1 файл файла. Если вы хотите использовать это для переменного порядка, вы можете использовать: cd $ (ls -d -1 * / | sed -n '4p'), чтобы открыть 4-ую папку в каталоге. Добавив его в псевдоним, вы сможете быстрее перемещаться по папкам.
Иван Ивкович
2

У меня есть хорошая настройка для этого, он позволяет мне не только перейти к ~ / somereallylongfoldername, но и CD туда, даже когда я нахожусь в папке /

первое, что я использую, это zsh с oh-my-zsh, это также позволит вам записывать компакт-диски, не беспокоясь о кейсе или даже не вводя cd

  1. установить git и zsh
sudo apt-get install zsh git
  1. установить Oh My ZSH

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

  1. Измените оболочку по умолчанию на ZSH
chsh -s /bin/zsh

откройте и отредактируйте ваш .zshrc, который находится в вашей домашней папке, а не скрыт

нано ~ / .zshrc

затем добавьте следующую строку в конец файла export CDPATH=$CDPATH:/:/home/$USER/:/media/$USER/

Если вам нравится моя тема, вы также можете изменить строку #ZSH_THEME="robbyrussell"наZSH_THEME="pygmalion"

Сохраните и закройте файл, затем перезапустите ie. закройте и снова откройте оболочку или просто откройте новую вкладку и попробуйте

вы не можете использовать клавишу табуляции для завершения имен, а в ZSH вам даже не нужно правильно вводить регистр, вы можете набрать document и нажать tab, и он превратит его в ~ / Documents

введите описание изображения здесь

zeitue
источник
0

Вы можете изменить каталог по номеру инода.
Сначала мы находим индекс с ls -il.
тогда

cd $(find -inum directory_inode_number)

источник
0

Если вам нужно сделать это в скрипте или для поддержки каталогов с некодируемыми именами:

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

Это работает, если в каталоге есть файлы, независимо от их порядка сортировки относительно каталогов.
Это работает для скрытых каталогов, когда происходит cd */сбой.
Это работает, если имя не представимо в текущей локали, когда lsпечатается только ??имя.

JFS
источник
0

Продолжая ответ туза:

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

открыть 1-ую папку в каталоге. «1p» можно изменить на «2p» для второго каталога.

ls -d -1 -la */

перечислить только каталоги из родительского каталога.

Иван Ивкович
источник