Estou tendo dificuldades para ler este roteiro. Posso sugerir que você reescreva um pouco?
#!/bin/sh
echo -n "/home/cosmoretro/movie/"
read destinationFileName
while :
do
echo -n "Ara:"
read sourceFileName
sourceFile=$(find /home/cosmoretro -type d -iname "$sourceFileName" -print -quit 2> /dev/null)
if [[ -z $sourceFile ]]; then
echo "No file named $sourceFileName found"
else
mv -- "$sourceFile" /home/cosmoretro/movie/"$destinationFileName"
fi
done
O que eu fiz:
- Use nomes descritivos como
destinationFileNameem vez detext2 - Recuar corretamente
- Torne
findapenas encontrar diretórios especificando-type d. Se você deseja mover somente arquivos, use-type fem vez de-type d. - Mover o redirecionamento para o final de um comando, pois não é importante
- Pare
finddepois de encontrar o primeiro arquivo (-quit) - Remova o
*supérfluo no comandofind- não tenho certeza do que você gostaria com ele. Se você quisesse que os nomes dos arquivos tivessem curingas (por exemplo, a pesquisa porfooretornariafoobar), seria necessário colocar o curinga nas aspas, ou seja,"$sourceFileName*". - Verifique se um arquivo foi encontrado com
-ztesting, se o resultado estiver vazio. - Proteja
mvdos nomes de arquivos que começam com-usando a opção de final de opções-- - Cite argumentos adequadamente para evitar que o espaço em branco interrompa o comando (não é necessário alterar
IFS)