如何cd
进入目录中的第二个文件夹?
语境
我所在的目录中有 3 个文件夹。执行后,ls -1
它们的顺序如下。
folder1
folder2
folder3
我想快速cd
进入folder2
。
我可以编写一个函数来快速cd
进入folder1
这是我的职责。
f1 () {
cd $(ls -d */|head -n 1)
}
问题
我需要一个名为 的函数f2
。执行后,cd
它将变成folder2
。
(文件夹按 排序ls -1
。我正在使用zsh
)
答案1
尝试:
cd $(ls -d */| sed -n 2p)
-n
告诉sed
它默认不要打印任何内容,并2p
告诉它打印第 2 行。
答案2
获得第二行最简单的方法是
ls -d */|head -2|tail -1
首先得到上面两行,然后是最后一行
问题是,如果你只有一个文件夹,你就会得到它,而不是第二个
答案3
不需要额外流程的事情:
dirs=( */ )
cd "${dirs[3]}" # 0-based