Directory

剪切到前四個目錄的路徑

  • April 23, 2021

我有幾個項目必須使用相同的命令。項目總是在

/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

zshshell 中, if $varis /1/2/3/4/5/6, ${var:h1}is /, ${var:h2}is /1, ${var:h3}is/1/2等等(h對於head,與 is csh/相同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.

引用自:https://unix.stackexchange.com/questions/477185