我最近遇到了一个难题,我在一个文件夹中,我想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