首页 > 解决方案 > 将文件夹中的所有文件匹配项分配给变量

问题描述

我想搜索一个简单的文本查询(在名为“textfiles”的目录内)并根据匹配项,将结果分配给bash(作为数组或列表)中的变量。此查询应该不区分大小写,并且上下文位于 bash 脚本(.sh 文件)中。我希望在数组中看到的名称只是文件名,而不是完整路径。

我正在尝试什么:

myfiles=./textfiles/*text*.txt

这匹配所有包含单词text的文件,但不匹配单词TEXT

我也试过

myfiles=(find textfiles -iname *text*)

...和...

myfiles=find textfiles -iname *text*

有针对这个的解决方法吗?

标签: bashfilevariablespattern-matching

解决方案


myfiles=$(find textfiles -iname '*text*' -exec basename '{}' \; 2>/dev/null) 

请注意如何-exec允许您对find找到的文件执行强大的操作。也许你甚至根本不需要数组,并且可以在-exec参数中做你需要做的事情。请注意,该-exec参数可能是您自己制作的脚本或其他可执行文件...


推荐阅读