如何查找文件名的第四个和第五个字符?

如何查找文件名的第四个和第五个字符?
$ ls
abcmkde
ghemkde
vdecdde

例如,我只想列出仅包含第 4 个和第 5 个字符的文件名,并且仅包含一次单个匹配的迭代(mkcd上面的示例中)。

有一堆具有不同名称和不同第四个和第五个字符的文件。

答案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,zshmksh:

for file in *; do
    printf '%s\n' "${file:3:2}"
done | sort -u

相关内容