Por que o seguinte não copia os arquivos para a pasta de destino?
# find /home/shantanu/processed/ -name '*2011*.xml' -exec cp /home/shantanu/tosend {} \;
cp: omitting directory `/home/shantanu/tosend'
cp: omitting directory `/home/shantanu/tosend'
cp: omitting directory `/home/shantanu/tosend'
\;
?find -iname '*.mp3' -mtime -1 -exec cp {} /home/my_path/ \;
há algo de errado com este comando? não está funcionando #eu enfrentei um problema algo como isto ...
Na verdade, de duas maneiras, você pode processar a
find
saída docopy
comando no comandoSe
find
a saída do comando não contiver nenhum espaço, ou seja, se o nome do arquivo não contiver espaço, você poderá usar o comando abaixo mencionado:Sintaxe:
find <Path> <Conditions> | xargs cp -t <copy file path>
Exemplo:
find -mtime -1 -type f | xargs cp -t inner/
Mas na maioria das vezes nossos arquivos de dados de produção podem conter espaço nele. Portanto, a maior parte do tempo abaixo do comando mencionado é mais segura:
Sintaxe:
find <path> <condition> -exec cp '{}' <copy path> \;
Exemplo
find -mtime -1 -type f -exec cp '{}' inner/ \;
No segundo exemplo, a última parte, ou seja, ponto-e-vírgula, também é considerada como parte do
find
comando, que deve ser escapada antes de pressionar o botão Enter. Caso contrário, você receberá um erro semelhante a esteNo seu caso, a sintaxe do comando copy está incorreta para copiar o arquivo find
/home/shantanu/tosend
. O seguinte comando funcionará:fonte
find
/xargs
,find <Path> <Conditions> -print0 | xargs -0 -r cp -t <copy file path>
. Exemplo:find -mtime -1 -type f -print0 | xargs -r0 cp -t inner/
Você precisa usar
cp -t /home/shantanu/tosend
para dizer que o argumento é o diretório de destino e não uma fonte. Você pode, então alterá-lo para-exec ... +
a fim de obtercp
para copiar tantos arquivos quanto possível ao mesmo tempo.fonte
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp --target-directory=/home/shantanu/tosend {} \;
fonte
A razão para esse erro é que você está tentando copiar uma pasta que requer a opção -r também para cp
fonte