2012-12-04 18 views
0

我想知道,是否有可能通過ID附加到其名稱來訪問「ls」返回的元素。我正在使用z-shell。 什麼我想到的是像下面通過zshell中的ID訪問元素的目錄

>> ls_modified 
A/ B/ C/ d.txt 
1 2 3 4 

所以我可以

>> cd_modified 2 

>> vim_modified 4 

訪問他們在下一步我已經找到了一些解決方法訪問由「ls -ltr」打印的最後一個元素,該元素具有以下別名:

cdlast='cd *(.om[1])' 
vlast='vim *(.om[1])' 

因爲我從來沒有真正在我的.zshrc中工作過,所以我不確定我是否可以簡單地將上面的代碼調整爲使用Integer作爲輸入。此外,我真的很想看到爲每個元素列出的ID,所以我知道我正在訪問哪一個。

如果有什麼辦法可以實現這一點,我會非常感謝。

另外我真的不知道使用哪個標籤。

回答

1

這是很容易與ZSH「通配」或「文件名生成」來實現這一功能

  • *:在當前工作目錄
  • *(.)所有文件和目錄:只有普通文件,不是目錄
  • *(.om):只有普通文件,通過修改日期
  • *(.om[2])下令:第二最近修改的常規文件

有關完整信息,請參閱http://zsh.sourceforge.net/Doc/Release/Expansion.html#Filename-Generation

如果要訪問按名稱排序的第二個目錄(默認值),請使用*(/[2])

要將索引作爲參數傳入,可以使用shell函數。

function cd_modified { cd *(/[$1]) } 
+0

謝謝!然後,我將使用'cd *(/ om [$ 1])'來訪問按日期排序的目錄。 但是'ls_modified'命令呢?我可以顯示目錄的ID嗎? – k1next

+0

這裏有一個可能的解決方案,雖然輸出會有點不同,那麼在你的例子'函數ls_modified {ls_arr =(\'ls \'); for((i = 1; i <= $#ls_arr; i ++));做echo -e「$ i \ t $ {ls_arr [i]}」;完成}' –