Como fazer uma única linha em duas novas linhas [duplicado]

0

Eu quero fazer uma única linha em duas novas linhas.

Meu código:

#!/bin/bash
dir="$1"

    printf "maximum file size: %s" \ 
                    find $dir -printf "%s %p\n" | sort -n | tail -1

com o código acima estou enfrentando um problema ao gerar saída.

Saída de erro:

maximum file size:  116864 /usr/lib/apt/methods/mirror

Saída esperada (somente o caminho deve estar em uma nova linha com uma guia):

 maximum file size:  116864 
               /usr/lib/apt/methods/mirror
    
por buddha sreekanth 12.05.2015 / 11:40

3 respostas

1
find "$dir" -printf "%s %p\n" | sort -n | tail -1 | {
    read -r size name
    printf "maximum file size: %d\n\t%s\n" "$size" "$name"
}

Como o read ocorre em um subshell, estou usando chaves para agrupar o comando read com o comando printf. Definir as variáveis e usá-las deve ocorrer no mesmo subnível.

    
por 12.05.2015 / 13:40
2

Provavelmente seria mais fácil canalizar a saída find por sed ou awk :

$!/bin/sh
dir=$1
find "$dir" -printf "%s %p\n" | sort -n | tail -1 | sed -n 's/^\([0-9]\+\)\s\+\(.*\)$/Max size: \n\t/p'
    
por 12.05.2015 / 12:16
-1
find $dir -printf "%s **\n**%p\n" | sort -n | tail -1

Use o comando acima.

    
por 12.05.2015 / 12:00