【问题标题】:batch renaming script files批量重命名脚本文件
【发布时间】:2013-03-12 03:27:11
【问题描述】:

在我的 nas4free (freeBSD) 中,我有几个包含照片的目录,我会使用一个 bash 脚本用包含它的目录的名称和计数器重命名每个文件。

示例:

来自

/ path/2012-05-01 - description / DSCN4074.JPG

/ path/2012-05-01 - description / 2012-05-01 - description (1 to n). jpg

【问题讨论】:

  • 问题是什么?你都尝试了些什么?您对某些特定的事情有疑问吗?
  • 我刚刚完成了一个脚本的开发。该脚本有效,我不知道从逻辑或语法的角度来看它是否正确。 #!/bin/bash COUNT=1 echo Sto cercando i file EXT=jpg for FILE in $(find . -type f -iname "*.$EXT") do CURRENT=pwd |剪切 -d / -f 5 NAME=echo $FILE |剪切 -d / -f 2 TOT=ls |grep -i "$EXT" | wc -l echo $CURRENT "("$COUNT "di" $TOT").jpg" | xargs -I {} mv "$NAME" "{}" let "COUNT=$COUNT+1";完成退出
  • 天哪,我不知道如何格式化文本...对不起

标签: bash unix rename


【解决方案1】:

每个目录只计算一次文件数,并减少管道:

#!/bin/bash
EXT=.jpg

shopt -s nullglob
find . -mindepth 2 -type d | while read d
do( cd "$d"
    CURRENT=$(basename "$d")
    FILES=(*"$EXT")
    TOT=${#FILES[@]}
    COUNT=0
    for FILE in ${FILES[@]}
    do  let COUNT=COUNT+1
        mv "$FILE" "$CURRENT ($COUNT of $TOT)$EXT"
    done
)done

【讨论】:

    猜你喜欢
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 2016-04-24
    • 2013-12-19
    相关资源
    最近更新 更多