O que significa '{\} {}' no comando 'find'?

5

Por favor, explique este comando em detalhes.

Estou usando este comando para encontrar arquivos grandes acima de 6 MB e dividi-los em blocos de 5 MB na mesma pasta. Em seguida, ele remove os arquivos originais (maiores que 6MB) no mesmo diretório.

find . -size +6M -exec split -d -b 5M {\} {}-part \; | find . -size +6M -exec rm -rf {} \;

Não tenho ideia sobre a finalidade da seguinte parte do comando:

{\} {}

Meu objetivo é desenvolver um script para fazer o backup dos domínios do Virtualmin nos buckets do Amazon S3 mensalmente.

Devido a um limite PUT de 5 GB no Amazon S3, tenho que dividir os backups de domínio ( tar.gz ) em tamanhos inferiores a 5 GB.

    
por Danial Jose 14.11.2014 / 07:30

1 resposta

6

A partir da página de localização :

The string '{}' is replaced by the current file name being processed everywhere it occurs in the arguments to the command...

Portanto, a primeira parte do comando find procura arquivos maiores que 6 MB e executa ( -exec ) split em todos os arquivos encontrados.

Por exemplo, se o arquivo encontrado for ./path/to/file , o comando executado seria:

split -d -b 5M ./path/to/file ./path/to/file-part 

{} é o espaço reservado substituído pelo caminho do arquivo. O {\} é desnecessário e também pode ser {} .

No segundo comando find - aquele após o pipe ( | ) - o comando find chama rm -rf para cada arquivo.

    
por 14.11.2014 / 07:48