求助:编写Bash脚本按文件名片段创建对应文件夹并归类文件
Bash脚本实现按标识分类文件到对应文件夹
针对你的文件列表,直接用下面的Bash脚本就能完成分类:
# 遍历所有符合格式的文件 for file in test-T*.txt; do # 提取文件名里的Txx标识作为文件夹名 folder=${file#test-} # 去掉文件名开头的"test-",得到类似"T01___2022.txt"的字符串 folder=${folder%%_*} # 去掉第一个下划线及后面的所有内容,得到"T01" mkdir -p "$folder" # 创建文件夹,-p参数确保文件夹已存在时不报错 mv "$file" "$folder/" # 将文件移入对应文件夹 done
关键步骤解释
for file in test-T*.txt:自动匹配所有以test-T开头、.txt结尾的文件,逐个处理${file#test-}:Bash参数扩展语法,专门用来删除变量开头的指定字符串${folder%%_*}:同样是参数扩展,删除变量中从第一个下划线到结尾的全部内容,精准提取出Txx标识mkdir -p "$folder":-p是安全创建参数,就算文件夹已经存在也不会抛出错误mv "$file" "$folder/":把当前处理的文件移动到目标文件夹,双引号包裹变量是为了兼容文件名含空格的情况(虽然你的文件没有,但养成好习惯)
使用方法
- 把上述代码复制到文本编辑器,保存为
sort_files.sh - 在终端进入文件所在目录,执行
chmod +x sort_files.sh给脚本添加执行权限 - 运行脚本:
./sort_files.sh
内容的提问来源于stack exchange,提问作者HwiNoree27
相关产品推荐
相关产品推荐

