kaisawind's blog
  • 关于
  • 所有帖子

单行命令根据图片名称创建空的txt文件 - Sat, Feb 14, 2026

ubuntu单行命令根据图片名称创建空的txt文件

ubuntu单行命令根据图片名称创建空的txt文件

基本用法

# 当前目录下处理常见图片格式
for img in *.JPG; do [[ -f "$img" ]] && touch "${img%.*}.txt"; done

扩展用法

处理多种图片格式

# 处理多种图片格式
for img in *.jpg *.jpeg *.png *.JPG *.JPEG *.PNG; do
    [[ -f "$img" ]] && touch "${img%.*}.txt"
done

递归处理子目录

# 递归处理所有JPG文件
find . -name "*.jpg" -type f | while read img; do
    touch "${img%.*}.txt"
done

批量创建同名文件夹

# 创建同名文件夹
for img in *.jpg; do
    [[ -f "$img" ]] && mkdir -p "${img%.*}"
done

写入默认内容

# 创建txt并写入内容
for img in *.jpg; do
    [[ -f "$img" ]] && echo "# ${img%.*}" > "${img%.*}.txt"
done

实用脚本

完整脚本

#!/bin/bash
# create_txt_for_images.sh

# 支持的图片格式
FORMATS="jpg jpeg png gif bmp JPG JPEG PNG GIF BMP"

# 遍历所有格式
for fmt in $FORMATS; do
    for img in *.$fmt; do
        # 检查文件是否存在
        if [[ -f "$img" ]]; then
            # 获取文件名(不含扩展名)
            name="${img%.*}"
            # 创建txt文件
            touch "${name}.txt"
            echo "Created: ${name}.txt"
        fi
    done
done

带进度显示

#!/bin/bash
count=0
total=$(ls *.jpg 2>/dev/null | wc -l)

for img in *.jpg; do
    [[ -f "$img" ]] && touch "${img%.*}.txt"
    ((count++))
    echo "Progress: $count/$total"
done

echo "Done! Created $count txt files."

常见用例

AI标注数据准备

# 为图片创建标注文件
for img in *.jpg; do
    [[ -f "$img" ]] && cat > "${img%.*}.txt" << EOF
# Image: $img
# Date: $(date +%Y-%m-%d)
# Labels:
EOF
done

批量重命名配套

# 先创建txt再重命名
for img in *.JPG; do
    if [[ -f "$img" ]]; then
        name="${img%.*}"
        lowercase=$(echo "$name" | tr '[:upper:]' '[:lower:]')
        touch "${lowercase}.txt"
        mv "$img" "${lowercase}.jpg"
    fi
done

最佳实践

  1. 先预览:使用echo先预览要创建的文件名
  2. 备份重要数据:批量操作前备份
  3. 使用版本控制:对于重要项目使用git
  4. 测试小批量:先用少量文件测试脚本


辽ICP备2021007608号 | © 2026 | kaisawind

Facebook Twitter GitHub