如何根据文件名的一部分匹配来列出文件?

如何根据文件名的一部分匹配来列出文件?

例如我的文件夹中有很多文件

Kiran.txt
Kiran1.txt
Kiran221.txt
Kiran144.txt
Time.csv
Timer.csv
Timer2.csv
Timer444.csv
Timer266.csv
Account.sh
Account3.sh
Account3333.sh
Account3333.sh
Account333333.sh

从这个目录中,我想知道如何grep根据文件名的一部分来显示文件 - 例如以“Account”开头的文件或以“.sh”结尾的文件。

答案1

你可以find

find -type f -name "Account*"

方案 2(可能也包括文件夹)

ls -1 Account*

替代方案 3(grep,这也可以包含文件夹)

ls -1 | grep -E "^Account"

答案2

使用通配符 (这个通配符是什么?):

ls *.sh

*匹配您想要的结尾之前的任何内容.sh。使用其他ls选项进行显示,例如-l使其成为长列表。请参阅man ls有关您可以使用它做什么的更多信息。

请注意,ls还会列出任何目录以 结尾.sh,不仅仅是文件。


您也可以使用它find来克服这个问题。

find . -type f -maxdepth 1 -name "*.sh"

此命令仅列出“真实”文件。如果您之后想对找到的文件进行一些操作,我建议您使用 find。您可以使用选项-exec

答案3

标准解决方案是管道:

ls | grep ^Account

对于诸如“以 Account 开头的文件”这样简单的事情,globs 也可以起作用:

ls Account*

但一般来说,grep 更强大,并且如果你的文件夹是真的真的满的。

答案4

使用以下命令

   ls *.sh

相关内容