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

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

我最近遇到了一个难题,我在一个文件夹中,我想cd转到一个子目录文件夹。这个文件夹中只有一个文件夹,而且名字很长。

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

有什么方法可以进入该文件夹,而不是输入:

 cd reallylongnamefolder

答案1

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

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

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

cd *上述建议仅在目录位于列表的第一个位置且不隐藏时才有效。如果文件按字母顺序排在您的目录之前,则此操作cd不会更改您的目录。

答案2

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

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

答案3

我觉得我已经明白了

cd * 
cd */

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


作为@Rinzwind评论中提到!

假设您有三个长文件夹:

 /thisislongfolder1
 /thisislongfolder2
 /thisislongfolder3

如果您输入文件的第一个字母,然后点击tab它,它将自动完成文件名!疯狂的东西!

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

或者你可以做的cd t*1是带你进入thisislongfolder1

谢谢你 Rinzwind!

答案4

我编写了一个 bash 函数,您可以将其放入.bashrc

gd() {
  if [ "$*" == "" ]; then
    cd */
    return
  fi
  for i in "$@"; do
    if [ -d "${PWD}"/$i ]; then
      cd $i
    else
      cd "${PWD}"/*$i*
    fi
  done
}

用法:

gd   # will moves you to the first directory in folder
gd a # will moves you to the firest directory containing 'a'

gd a*b # will moves you to the directory matching the pattern

gd a b # will moves you to the directory containing 'a' and then to a subdirectory containg 'b', you can privide arbitary subfolder names 

相关内容