Shell

如何使用 ls 搜尋具有固定名稱長度的文件?

  • June 11, 2021

在一個目錄中,我有類似的文件

lazer_100506
lazer_100707
lazer_091211
lazer_110103
lazer_100406_temp
lazer_100622#delete

等等

如何獲得僅前四個文件的列表?

$ ls lazer_......
ls: lazer_......: No such file or directory
$ 

有多種方法:

ls只要

ls lazer_??????

lsegrep

ls | egrep '^lazer_.{6}$'

find

find . -regextype posix-egrep -regex '^./lazer_.{6}$'

你可以使用zsh一個像這樣的 glob ?(#cN)(這裡的c標誌需要前一個?完全匹配N時間):

setopt extendedglob
print -rl -- ?(#c12)

如果您願意ls

ls -d -- ?(#c12)

您還可以添加限定符,例如遞歸搜尋具有固定名稱長度的正常文件:

print -rl -- **/?(#c12)(.)

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