Directory
剪切到前四個目錄的路徑
我有幾個項目必須使用相同的命令。項目總是在
/home/[username]/public_html/[prjectname]/
我想從我的項目的每個目錄執行這個命令,所以我需要知道我的項目庫。我試過
${path:0:20}
了,但由於使用者和項目名稱的字元串長度不同。我只需要知道路徑的前四個部分。
你已經提到了
cut
。您只需將分隔符設置為/
. 有點不直覺的部分是您需要欄位 1-5,因為第一個欄位之前的部分/
也算作(空)欄位。echo /1/2/3/4/5/6/7 | cut -d/ -f1-5
結果是
/1/2/3/4
在
zsh
shell 中, if$var
is/1/2/3/4/5/6
,${var:h1}
is/
,${var:h2}
is/1
,${var:h3}
is/1/2
等等(h
對於head,與 iscsh
/相同vim
;而數字後綴是zsh
副檔名)所以在這裡,要
/home/user/public_html/projectX
離開file=/home/user/public_html/projectX/a/b
,它只是dir=${file:h5}
要遍歷所有匹配的目錄
/home/*/public_html/*
,那就是:for dir in /home/*/public_html/*(N/); do something with $dir done
(替換
(N/)
為(N-/)
還包括指向目錄的符號連結;無論如何,第一個*
也將匹配指向上述目錄的符號連結)。那
(N/)
是一個glob 限定符,一個特定於zsh
.