O problema é com esta linha:
if test -d $file
O $file
que você extraiu de ls -A
não contém o caminho completo. Você pode consertá-lo substituindo essa linha por
if test -d "$1/$file"
Existe outro bug, que é o de quebrar por todo o lugar se um nome de arquivo tiver espaços nele. Coloque nomes de arquivos entre aspas.