0

我有这个脚本,我正在运行将文件夹中的所有文件重命名为“1.png”、“2.png”等,但有时它会完全擦除(或将文件移动到其他地方,我不知道发生了什么)前 10 张左右的图像。每当文件夹中有超过 10 张图像时,这似乎就会发生。我正在运行的脚本如下,有人有什么想法吗?

#!/bin/bash
cd "$1"
cnt=1
for fname in *
do
if [ "$1" != '/var/www/cydia.stumpyinc.com/theme/images/browse/icons/' ]
then
    mv "$fname" ${cnt}.png
    cnt=$(( $cnt + 1 ))
fi
done

编辑

我也在终端中收到此错误,但不知道它是否重要

mv: cannot stat `*': No such file or directory
4

1 回答 1

2

您的脚本很奇怪:根据您的描述,将所有内容重命名为数字的正确方法应该类似于:

#!/bin/bash


error() {
    ec=$1
    shift;
    echo "$@" 1>&2
    exit $ec
}

TARGETDIR="$1"

if [ ! -d $TARGETDIR ] ; then
     error 1 "$TARGETDIR: No such directory"
fi

if [ "$TARGETDIR" = '/var/www/cydia.stumpyinc.com/theme/images/browse/icons/' ] ; then
     error 1 "Cannot process $TARGETDIR"
fi

# Okay let's process stuff now...


cd $TARGETDIR
if [ "$(echo *)" = "*" ] ; then
     error 1 "$TARGETDIR: empty directory"
fi

# calculate zero-padding for the number of files present.

zeros=$(ls -1 | wc -l | wc -c)
cnt=1
for k in * ; do 
    if [ -f "$k" ] ; then
          ext=."$(echo $k | awk -F\\. '{ printf $NF }')"
          fn=$(printf "%0${zeros}d" $cnt)
          echo "Converting $k to ${fn}${ext}"
          mv "$k" "${fn}${ext}"
          cnt=$(($cnt+1)) 
    fi
done
于 2011-11-16T02:40:16.217 回答