Linux如何使用ls命令筛选文件名含指定字符的文件并导出列表到txt
筛选含固定字段文件名的命令方案
方法1:通配符直接匹配(操作最简单)
直接在ls的匹配规则中加入通配符*匹配固定字段前后的可变内容,命令如下:
ls "${mypath}"/*_abcd_* > "${mypath}/my_list.txt"
*代表匹配任意长度的任意字符,刚好适配文件名前缀的数字和末尾的可变时间戳。
方法2:find命令实现(稳定性更高,可排除文件夹)
如果需要严格筛选仅文件、排除同名目录,或者避免ls在特殊文件名场景下的异常,推荐使用find命令:
find "${mypath}" -maxdepth 1 -type f -name "*_abcd_*" > "${mypath}/my_list.txt"
参数说明:
-maxdepth 1:仅搜索目标目录本身,不递归遍历子目录-type f:仅匹配文件类型,过滤掉文件夹-name "*_abcd_*":匹配文件名包含_abcd_的对象
可选优化
如果需要输出的列表仅保留纯文件名、不携带路径前缀,可以调整find命令为:
find "${mypath}" -maxdepth 1 -type f -name "*_abcd_*" -printf "%f\n" > "${mypath}/my_list.txt"
内容的提问来源于stack exchange,提问作者astonishingme
相关产品推荐
相关产品推荐

