我想寫一個簡單的腳本,將文件移動到目錄中的順序文件列表中(如果缺少的話)。例如,如果我有一個名爲「1」,「2」,「3」,「5」等文件的目錄,我想將「3」移動到「4」,「3」到「2」等。我有下面的代碼。 Upper和Lower對應於我想要轉換的值。使用上面的例子,LOWER是1和上會5爲什麼mv在這個bash腳本中工作?
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是抱怨。任何想法將不勝感激!
要調試你的命令,只需在'mv'前面加上「echo」一詞。或者在腳本的頂部添加'set -x'。 – alexis 2012-04-08 20:57:38