我花了一些时间为我的问题找到解决方案,但谷歌不能给我一个足够的答案…我经常使用linux中的命令行,我只是需要一种快速浏览文件系统的方法。我不想总是键入cd[相对或绝对路径]。我知道有push和pop,但是对于这样一个简单的问题来说,这似乎还是太复杂了。
当我在~/Desktop/sampleFile
时,我只想使用sampleCommand fileToGo
到达~/Desktop/anotherFile/anotherFile/fileToGo
,无论文件位于何处。有简单的命令吗?
提前感谢!
这可以在不涉及子shell分支的情况下使用本机Bash特性完成:
您可以将此插入"$HOME/.bashrc"
:
cdf(){
# Query globstar state
shopt -q globstar
# and save it in the gs variable (gs=0 if set, 1 if not)
local gs=$?
# Need globstar to glob find files in sub-directories
shopt -s globstar
# Find the file in directories
# and store the result into the matches array
matches=(**/"$1")
# globstar no longer needed, so restore its previous state
[ $gs -gt 0 ] && shopt -u globstar
# Change to the directory containing the first matched file
cd "${matches[0]%/*}" # cd EXIT status is preserved
}
嗯,你可以这样做:
cd $(dirname $(find . -name name-of-your-file | head -n 1))
将在当前目录(使用/
而不是.
来搜索所有目录)中搜索名为name-of-your-file
和cd
的文件到它找到的第一个同名文件的父目录中。
如果您在一个大目录中,输入路径并使用cd
可能会比这快,但它适用于小目录。
你可以从这里尝试一下:
https://github.com/vitalij555/cd_plus_plus
安装后,很容易使用:
- 用标签标记当前目录(或为了方便而使用多个标签):
标记label_name
- 返回到该文件夹,只需发出:
去label_name
我写这个脚本,因为我通常需要在许多不同的文件夹之间切换在工作日,并厌倦了手动创建别名。