combina instruções de localização

0

Como posso combinar os dois comandos abaixo? Eu quero pegar um único arquivo com o dono e o tamanho dos arquivos

find /test -type f -size +$(df -k /test| awk 'NR == 3 { printf "%d", 
$1/4 }') -exec du -sh {} +


find /test -type f -size +$(df -k /test | awk 'NR == 3 { printf "%d", 
$1/4 }') -exec stat -c '%U' {} +
    
por Vas 30.10.2018 / 00:31

1 resposta

1

Duas opções possíveis, em que eliminei a maior parte da sua declaração find para que ela se concentre nas diferentes maneiras de combiná-las:

  1. combine as instruções find em um "find-shell":

    find ... -exec sh -c 'printf "%s - %s - %s\n" "$1" "$(stat -c %U "$1")" "$(du -sh "$1")"' find-sh {} \;
    

Isso passa os arquivos um de cada vez para o comando shell, que combina os comandos stat e du em uma instrução printf formatada. Esta segunda opção passa vários arquivos de uma vez para o comando stat .

  1. combine a funcionalidade com stat :

    find ... -exec stat -c '%n %U %s' {} +
    

A opção stat imprime o tamanho em bytes, o que é um pouco diferente do formato du -h .

Uma terceira opção existe, se você tiver o GNU find disponível, para sua extensão -printf :

find ... -printf '%p %u %s\n'
    
por 30.10.2018 / 01:29