我正在尝试编写一个简单的脚本,如果缺少某个文件,它会将文件移动到目录中的顺序文件列表中。例如,如果我有一个名为“1”,“2”,“3”,“5”等文件的目录,我想将“3”移动到“4”,“3”移动到“2”等我在下面有以下代码。上部和下部对应于我想要移动的值。使用上面的例子,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会抱怨。任何想法将不胜感激!
答案 0 :(得分:1)
您的mv
命令正在尝试移动本地目录中的文件,但您检查的文件位于其他位置($DIRNAME
中)。也许试试mv "$DIRNAME/$n" "$DIRNAME/$y"
?