首页 > 解决方案 > 列出名称长度在 3 到 6 个字符之间的所有文件

问题描述

我必须为课堂编写一个小 shell 脚本,而且由于只有在线讲座,我没有选择向我的教授寻求帮助的选项。

任务(应该)其实很简单:

编写一个shell脚本,列出当前目录下所有文件名大于3小于6个字符的文件

  • 12.txt-->不应列出

  • 123.txt-->不应该列出

  • 1234567.txt-->不应列出

  • 12345.txt--> 应该列出

  • 123456.txt--> 应该列出

问题中没有给出后缀(文件扩展名).txt,它只是我的一个例子。所有文件的列表应该适用于任何后缀。

如果有人可以帮助我理解正确的命令,或者发布指向教程等的链接,我会很高兴。

标签: bashshellshzsh

解决方案


它效率不高,但它会帮助您理解,遍历目录中的每个 .txt 文件并逐个过滤它们:

cd yourpath/dir
for i in *.txt;
do
    new_Val="${i%.*}"
    if (( ${#new_Val} >3 && ${#new_Val} <6 ));
    then
        echo "${i}"
    fi
done

删除后缀.txt${i%.*}

姓名长度:${#new_Val}

输入 :

1234567.txt
12345.txt
123aaaa.txt
123aa.txt
1234.txt

输出 :

12345.txt
123aa.txt
1234.txt

推荐阅读