bash - 将文件夹中的所有文件匹配项分配给变量
问题描述
我想搜索一个简单的文本查询(在名为“textfiles”的目录内)并根据匹配项,将结果分配给bash
(作为数组或列表)中的变量。此查询应该不区分大小写,并且上下文位于 bash 脚本(.sh 文件)中。我希望在数组中看到的名称只是文件名,而不是完整路径。
我正在尝试什么:
myfiles=./textfiles/*text*.txt
这匹配所有包含单词text
的文件,但不匹配单词TEXT
。
我也试过
myfiles=(find textfiles -iname *text*)
...和...
myfiles=find textfiles -iname *text*
有针对这个的解决方法吗?
解决方案
myfiles=$(find textfiles -iname '*text*' -exec basename '{}' \; 2>/dev/null)
请注意如何-exec
允许您对find
找到的文件执行强大的操作。也许你甚至根本不需要数组,并且可以在-exec
参数中做你需要做的事情。请注意,该-exec
参数可能是您自己制作的脚本或其他可执行文件...
推荐阅读
- html - 标签元素是否必须与表单相关联?
- javascript - 通过 localstorage 设置时,反应状态仍在变化
- r - R 中的 TryCatch - 循环网页抓取
- java - 在java程序中打开另一个面板后面板不会释放
- c# - 如何通过 c# 中任何 int 属性的总和对自定义类的队列列表进行排序
- regex - XSLT 2.0 anlayze-string 选项不起作用?
- angular - 是否可以使用相同的键但作为不同的实例复制 Angular 2 Form?
- javascript - 使用被点击的字体 awsome sort 图标
- laravel - 为什么我在作曲家安装后在 Laravel 中收到 500 服务器错误
- selenium-webdriver - 如何在 selenium webdriver 中处理多个 scrollintoview