Estou escrevendo um script simples que usará uma palavra-chave. Em seguida, ele irá procurar os arquivos no diretório que contém aquela palavra-chave e copiá-los para outro diretório (nome do diretório = palavra-chave).
A palavra-chave é passada como um argumento de linha de comando. Aqui está meu roteiro:
#!/bin/bash
# start
mkdir $1
cp `grep -Ril \"$1\"` $1
Parece que tenho um erro com o cp
comando dizendo:
missing destination file operand
Como posso corrigir esse erro?
Obrigado!
Responder1
A solução na resposta de Mike está quase correta, no entanto, eu mudaria um pouco para criar o diretório somente se o grep encontrar algo, evitando assim os diretórios vazios
#!/bin/bash
filenames=$(grep -Ril "$1")
[ $? -eq 0 ] && mkdir "$1"
for file in $filenames; do
cp "$file" "$1"
done
Responder2
Esta é a maneira correta:
#!/bin/bash
mkdir "$1"
filenames=$(grep -Ril "$1")
if [ $? -eq 0 ] ; then
echo "$filenames" | while IFS= read -r line ; do
cp "$line" "$1"
done
fi
Responder3
Você poderia tentar usar find :
mkdir "$1"
find . -type f -name "*$1*" -exec cp {} path/to/"$1" \;