Remova a barra do nome do arquivo na instrução if
. Do jeito que você tem, ele está verificando o arquivo no diretório raiz, mas depois ele é criado em qualquer diretório atual.
Além disso, seu script basicamente diz "se suid.old não existir então faça um diff".
Você pode querer algo como:
#!/bin/bash
if [ ! -f "suid.old" ]
then
find / -perm -4000 -o -perm -2000 ls > suid.old
fi
if [ ! -f "suid.new" ]
then
find / -perm 4000 -o -perm -2000 ls > suid.new
fi
diff suid.old suid.new > newchanges.list
mv suid.new suid.old
Isto diz: "Se suid.old não existir, crie-o. Se suid.new não existir, crie-o. Agora que ele foi criado (ou já existe) faça o diff."