您如何在不输入名称的情况下进入第一个可用文件夹?


30

我最近陷入困境,当时我位于一个文件夹内,并且我想cd进入一个子目录文件夹。该文件夹内只有一个文件夹,这是一个很长的名字。

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

有什么办法可以进入该文件夹而不是键入:

 cd reallylongnamefolder

1
有很多方法:cd */或者cd rea*/不确定是否始终只有1个子目录(如果使用bash,也可以cd rea[TAB]在其他shell中使用..,但是扩展名称的方法可能有所不同)。如果“ / reallylongnamefolder”是绝对路径,则相同,但前面带有“ /”,例如:cd /rea*/
Olivier Dulac 2014年

Answers:


38

我建议您键入前几个字母并按tab。Bash具有自动完成功能,非常有用。如果仅是当前路径中的目录,只需按即可tab填充整个目录。

输入cd并按tab两次将显示当前目录中的所有选项。

tab 通常在bash中非常有用,因为您只需一两次按下即可访问几乎所有可执行文件。

cd *如上所建议,仅当目录在列表中第一且未隐藏时才起作用。如果目录前有字母顺序的文件,cd则根本不会更改目录。


15
如果只存在一个目录,您甚至根本不需要键入任何字母:cd <tab>足够聪明。
amalloy 2014年

1
在Windows中也可以使用。(适用于来自Google的用户。)
Koray Tugay 2014年

16

我想我真的想通了

cd * 
cd */

但是我没有测试过是否有多个文件和一个文件夹!


正如@Rinzwind在评论中提到的!

假设您有三个长文件夹:

 /thisislongfolder1
 /thisislongfolder2
 /thisislongfolder3

如果您输入文件的第一个字母,则点击tab它会自动完成文件名!疯狂的事情!

因此,在上面的示例中,您可以输入:t tab,它将自动完成:(cd thisislongfolder然后您自己输入数字)。

或者您可以采取cd t*1将您带入thisislongfolder1

谢谢林兹温德!


6
CD first_letter_or_some_letters然后{标签}是最简单的(也可以解决你的很多文件夹的问题。你可以用1个多选项卡和信件,甚至混合字母,系统会自动完成尽可能就可以了。您也可以cd r*r和希望这是唯一的文件夹,开始和有R结尾的。
Rinzwind

@Rinzwind哇!我不知道!谢谢!
Arian Faurtosh 2014年

试试看。将您的结果添加到答案中,您可能会因此获得声誉;-)
Rinzwind 2014年

4
cd */可能会解决问题
gniourf_gniourf 2014年

3
cd *失败比成功更多。
David Richerby 2014年

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

ls -d */列出目录,head -n 1并给出此列表中的第一个目录。


是的,您要输入...。我宁可使用tab-tab键查找名称,而不要键入此名称。它是100%正确的,不错的答案!
tomsmeding

1
@tomsmeding如果要将脚本写入cd第一个目录,则无法制表符。
pastebin.com斜线0mr8spkT 2014年

-n 1显示文件的最后1个文件。如果要将其用于可变顺序,则可以使用:cd $(ls -d -1 * / | sed -n'4p')打开目录中的第4个文件夹。将其添加到别名可以使您更快地进行文件夹导航。
伊万·伊夫科维奇(IvanIvković)

2

为此,我有一个不错的设置,它不仅使我可以将CD cd到〜/ somereallylongfoldername,而且即使在/文件夹中,也可以将其cd到那里

我首先使用的是带有oh-my-zsh的zsh,这也使您无需担心大小写甚至不用键入cd即可进行cd

  1. 安装git和zsh
sudo apt-get install zsh git
  1. 安装哦,我的ZSH

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

  1. 将默认外壳更改为ZSH
chsh -s /bin/zsh

打开并编辑位于主文件夹中的.zshrc,而不是隐藏

纳米〜/ .zshrc

然后将以下行添加到文件的底部 export CDPATH=$CDPATH:/:/home/$USER/:/media/$USER/

如果您喜欢我的主题,也可以将行更改#ZSH_THEME="robbyrussell"ZSH_THEME="pygmalion"

保存并关闭文件,然后重新启动。关闭并重新打开外壳,或者只是打开一个新选项卡并尝试一下

不是,您可以使用Tab键来完成名称,而在ZSH中,您甚至不必输入大小写,您可以键入docu并按Tab键,它将变成〜/ Documents

在此处输入图片说明


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仅打印??而不是名称,则该名称在当前语言环境中无法表示时有效。


0

扩展王牌的答案:

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

打开目录中的第一个文件夹。可以将第二个目录的“ 1p”更改为“ 2p”。

ls -d -1 -la */

仅列出父目录中的目录。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.