0

我正在尝试编写一个简单的脚本,如果缺少一个,它将移动目录中顺序文件列表中的文件。例如,如果我有一个包含名为“1”、“2”、“3”、“5”等文件的目录,我想将“3”移动到“4”,将“3”移动到“2”等.我有下面的代码。Upper 和 Lower 对应于我要转换的值。使用上面的示例,LOWER 为 1,UPPER 为 5。

 for z in $( eval echo {$UPPER..$LOWER}) ; do          
      checkfile $DIRNAME $z #Returns -1 on file missing
      if [[ $? -ne 0 ]]; then
           echo "Found bad match"
           for y in $( eval echo {$z..$LOWER}) ; do
                n=$(($y - 1))
                echo "$y $n"
                mv "$n" "$y"
           done
           exit 0
      fi  
 done

我收到以下输出

Found bad match
18 17
mv: cannot stat `17': No such file or directory
17 16
mv: cannot stat `16': No such file or directory
16 15
mv: cannot stat `15': No such file or directory
15 14
mv: cannot stat `14': No such file or directory

我不太清楚为什么 mv 抱怨。任何想法将不胜感激!

4

1 回答 1

1

您的mv命令正在尝试移动本地目录中的文件,但您正在检查的文件位于其他位置(在 中$DIRNAME)。也许试试mv "$DIRNAME/$n" "$DIRNAME/$y"

于 2012-04-08T20:57:38.440 回答