Olá pessoal, estou tentando fazer aqui um pequeno script para procurar strings dentro de arquivos,
se encontrado, mover para outra pasta. segue:
#!/bin/bash
for i in $(grep $1 * | cut -d : -f 1)
do
mv "$i" ./$2/
done
sendo assim, em uma pasta com dezenas de arquivos, chamo o script da seguinte forma:
sh mover.sh cliente backup
o primeiro parametro "cliente" é a string que procuro nos arquivos.
o segundo parametro "backup" é a pasta para onde eu quero mover.
o problema está em arquivos que tem espaço no nome. por exemplo criei um arquivo de teste assim:
echo cliente >> "testando arquivo agora.txt"
depois chamei o comando
sh mover.sh cliente backup
ai retornou os erros:
mv: impossível obter estado de "testando": Arquivo ou diretório não encontrado
mv: impossível obter estado de "arquivo": Arquivo ou diretório não encontrado
mv: impossível obter estado de "agora.txt": Arquivo ou diretório não encontrado
ou seja, ao inves do resultado do comando "grep $1 * | cut -d : -f 1" colocar na variável i o valor "testando arquivo agora.txt" ele está fragmentando o retorno separando por espaços....