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

Lav*_*nya 4 linux command-line globbing

例如,我在一个文件夹中有很多文件

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
Run Code Online (Sandbox Code Playgroud)

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

ajr*_*eal 9

你可以 find

find -type f -name "Account*"
Run Code Online (Sandbox Code Playgroud)

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

ls -1 Account*
Run Code Online (Sandbox Code Playgroud)

备选方案 3(grep,这也可能包括文件夹)

ls -1 | grep -E "^Account"
Run Code Online (Sandbox Code Playgroud)


slh*_*hck 9

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

ls *.sh
Run Code Online (Sandbox Code Playgroud)

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

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


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

find . -type f -maxdepth 1 -name "*.sh"
Run Code Online (Sandbox Code Playgroud)

此命令仅列出“真实”文件。如果您以后想对找到的文件做一些事情,我建议使用 find 。你可以做到这一点-exec选项