如何通过分割tgz文件名批量生成指定格式目录?
批量处理.tgz文件并按转换后的姓名创建目录
当然可以用bash的for循环批量完成,无需逐个操作,具体步骤和脚本如下:
完整批量处理命令
for filename in *.tgz; do # 从文件名中提取姓名部分 name_part=$(echo "$filename" | sed -E 's/^Huistaak1-HelloWorld_(.*)\.s\.ua_poging_.*/\1/') # 将「名字.姓氏」分割为独立部分(以第一个点为界,兼容带中间名的姓氏) first_name=${name_part%%.*} last_name=${name_part#*.} # 生成「姓氏.名字」格式的目录名 target_dir="${last_name}.${first_name}" # 创建目录(-p 参数避免目录已存在时抛出错误) mkdir -p "$target_dir" done
各部分说明
- 提取姓名:通过
sed正则匹配,精准捕获文件名中Huistaak1-HelloWorld_之后、.s.ua_poging之前的内容,比如从Huistaak1-HelloWorld_Jonas.De.Preter.s.ua_poging_2019-11-12.tgz中提取出Jonas.De.Preter。 - 分割转换格式:
${name_part%%.*}:截取第一个点之前的内容作为名字(如Jonas);${name_part#*.}:截取第一个点之后的所有内容作为姓氏(如De.Preter);- 拼接成
姓氏.名字的目录名(如De.Preter.Jonas)。
- 创建目录:
mkdir -p确保目录能被成功创建,即使目录已存在也不会报错,避免中断批量处理流程。
内容的提问来源于stack exchange,提问作者FieldyScop
相关产品推荐
相关产品推荐

