我花了一些时间寻找问题的解决方案,但谷歌无法为我提供足够的答案...我在Linux中使用命令行进行了大量工作,我只需要一种快速浏览文件系统的方法。我不想一直输入 cd [相对或绝对路径]。我知道有 pushd 和 popd,但对于像这样的简单问题来说,这似乎仍然太复杂了。
当我在
~/Desktop/sampleFile
时,我只想使用 sampleCommand fileToGo
到达 ~/Desktop/anotherFile/anotherFile/fileToGo
,无论文件位于何处。有一个简单的命令吗?
提前致谢!
这可以使用本机 Bash 功能来完成,而不涉及子 shell 分支:
您可以将其插入您的
"$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
可能会比这更快,但对于小目录来说它可以正常工作。
您可以从这里尝试 cd++:
https://github.com/vitalij555/cd_plus_plus
安装后,很容易使用:
标记标签_名称
转到标签名称
我编写这个脚本是因为我通常需要在工作日期间在许多不同的文件夹之间切换,并且厌倦了手动创建别名。