Shell实现列出MG开头文件夹写入txt并读取生成变量列表
Shell脚本实现MG开头文件夹导出与变量拼接
功能1:导出指定路径下MG开头文件夹列表到txt文件
- 不建议直接使用参考命令
ls | grep MG*.* > tempfile.txt,该写法存在两个明显问题:一是正则匹配逻辑错误,会误匹配不符合命名规则的内容;二是无法区分文件和文件夹,会把名称带MG的普通文件也写入结果。 - 兼容Linux、macOS环境的稳妥实现命令如下,把命令里的
/your/target/path替换成你实际要扫描的文件夹路径即可:
find /your/target/path -maxdepth 1 -type d -name "MG*" -exec basename {} \; > mg_folder_list.txt
- 参数说明:
-maxdepth 1:仅扫描指定路径的第一层内容,不递归遍历子文件夹-type d:只匹配文件夹类型,自动过滤普通文件、软链接等其他类型内容-exec basename {} \;:仅输出文件夹本身的名称,不带前置路径,逐行写入txt文件
- 最终生成的
mg_folder_list.txt格式完全符合要求,示例内容如下:
MG-x###1 MG-x###2 MG-x###3
功能2:读取txt文件拼接为空格分隔的列表变量
- 直接执行以下命令,即可把txt内逐行存储的文件夹名拼接为要求的变量格式:
listvariables=$(tr '\n' ' ' < mg_folder_list.txt | sed 's/[[:space:]]*$//')
- 逻辑说明:
tr '\n' ' '把txt内的换行符全部替换为空格,将逐行内容转为空格分隔的格式sed 's/[[:space:]]*$//'清除字符串末尾多余的空格,避免变量尾部带无效空白字符
- 执行完成后可通过
echo "$listvariables"验证结果,输出格式如下:
MG-x###1 MG-x###2 MG-x###3
内容的提问来源于stack exchange,提问作者Curious Scripting
相关产品推荐
相关产品推荐

