You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自动创建同名文件夹并将不同扩展名的文件移动至对应目录

按文件名前缀自动分类移动文件的Shell脚本实现

你原有脚本硬编码了目标文件夹名称,且固定复制到单个目录,无法适配动态前缀的分类需求,以下是可直接使用的实现:

版本1:直接遍历当前目录下所有目标后缀文件

无需提前准备文件列表,自动识别.txt/.ascii/.mat后缀文件处理:

#!/bin/sh
for file in *.txt *.ascii *.mat; do
  # 跳过无匹配文件时生成的通配符本身
  [ -f "$file" ] || continue
  # 提取文件名前缀(删除最后一个.及之后的扩展名)
  target_dir="${file%.*}"
  # 自动创建目录,已存在时不会报错
  mkdir -p "$target_dir"
  # 移动文件到对应目录,需保留原文件可将mv改为cp
  mv "$file" "$target_dir/"
done

版本2:从list.txt读取指定文件处理

如果需要按你原有逻辑从预设的文件列表读取处理,使用以下兼容带空格文件名的版本:

#!/bin/sh
# 使用while read替代for循环,避免文件名含空格时拆分错误
while IFS= read -r file; do
  [ -f "$file" ] || continue
  target_dir="${file%.*}"
  mkdir -p "$target_dir"
  mv "$file" "$target_dir/"
done < list.txt

关键逻辑说明

  • ${file%.*}是Shell原生参数扩展语法,作用是从变量值末尾删除最短的匹配.及后续内容,刚好实现提取不含扩展名的文件名前缀
  • mkdir -p参数可以自动判断目录是否存在,不存在才创建,不会重复创建报错

内容的提问来源于stack exchange,提问作者manas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:27:03