ディレクトリ内の連続ファイルのリスト内のファイルが見つからない場合にファイルを移動する簡単なスクリプトを作成しようとしています。たとえば、「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が不平を言っているのかよくわかりません。どんなアイデアでも大歓迎です!