Linux
切換到文件所在的目錄
我有一個文件的相對路徑。我想切換到文件所在的目錄。有什麼辦法嗎?
我嘗試了多種“查找”組合,但沒有成功。
使用
dirname
:cd "$(dirname "/path/to/file")"
或者
file="/path/to/file" cd "$(dirname "$file")"
使用
shell
語法:file="/path/to/file" cd "${file%/*}"
用
zsh
而不是bash
:cd /path/to/file(:h)
或者:
cd -- **/file([1]:h)
在目前目錄下遞歸查找
file
任何位置(儘管不是在隱藏目錄中,除非您添加限定符),並查找第一個文件的父級(按字母順序;您可以使用or限定符選擇不同的順序)找到的文件。D``cd``o``O
:h
是獲取文件頭(目錄名)的修飾符。這來自csh
於 70 年代後期,也可以在 invim
或 in 中找到bash
(儘管僅適用於那裡的歷史擴展)。Glob 限定符(內部(...)
進一步限定或修改 glob 的部分)是 zsh 特定的。使用
bash
和 GNU 工具,您可以做一些接近的事情:IFS= read -rd '' dir <( LC_ALL=C find . -name '.?*' -prune -o -name file -printf '%h\0' | sort -z ) && cd "$dir"
或者:
shopt -s globstar # enable zsh-style recursive globbing though # it's still somewhat buggy in bash shopt -s failglob files=(./**/file) && cd "${file%/*}"