
$ ls
abcmkde
ghemkde
vdecdde
例如,我只想列出僅包含 4 個和第 5 個字元的檔案名,並且僅包含一次單次匹配迭代(mk
在cd
上面的範例中)。
有一堆具有不同名稱和不同第四個和第五個字元的檔案。
答案1
應用 Unix 哲學:每項工作一個工具,以及將它們組合在一起的 shell。共有三個職位:
列出檔案名稱。除非您的檔案名稱包含不可列印的字符或控製字符,否則解析 的輸出
ls
是合理的。如果您只想列出某些文件,那麼您可以使用類似的東西printf '%s\n' *.ext
每行列出一個名稱。
提取檔案名稱中您感興趣的部分
cut -b 4,5
。cut -c 4,5
刪除重複項。最簡單的方法是
sort -u
(這也會對零件進行排序)。
管道一起加入這些計劃。結果是
ls | cut -b 4,5 | sort -u
答案2
與ksh93
, bash
,zsh
或mksh
:
for file in *; do
printf '%s\n' "${file:3:2}"
done | sort -u