如何根据提供的模式列出文件夹中的文件名?

如何根据提供的模式列出文件夹中的文件名?

我试图找到一个命令,该命令将列出包含输入的关键字的文件夹中的所有文件。

我已经尝试过grep -l,但它不会列出任何内容

答案1

find /path/to/folder -type f -name "*key*"

上面的命令将搜索所有子目录中的文件。要仅搜索当前目录(而不是子目录)中的文件,请使用以下命令:

find /path/to/folder -maxdepth 1 -type f -name "*key*"

以上命令仅特定于 bash shell

答案2

ls命令用于列出文件。 shell 为您提供了许多选项来列出与模式匹配的文件,例如:

  • 列出所有以“a”开头的文件:ls a*
  • 列出所有以“.txt”结尾的文件:ls *.txt
  • 列出以“x”开头并以“.sh”结尾的所有文件:ls x*.sh

还有很多更有趣的模式。要了解更多信息,请阅读man bash.您可以通过按“/”键进行搜索man bash,然后输入文本“Pattern Matching”并按回车键跳转到相关部分。

答案3

set ./*keyword*
[ -e "$1" ] || shift
printf "${1+%s\n}" "$@"

将打印当前目录中所有文件的列表,其中包含*keyword* (不以.。但更重要的是,它将 shell 的位置数组设置为文件名。因此,如果这些文件存在,则可以在"$1"等中单独引用它们"$2",并且它们的总数在 中"$#"

相关内容