한 줄을 두 개의 새로운 줄로 바꾸는 방법

한 줄을 두 개의 새로운 줄로 바꾸는 방법

한 줄을 두 줄로 바꾸고 싶습니다.

내 코드:

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

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

위 코드를 사용하면 출력을 생성하는 동안 문제가 발생합니다.

오류 출력:

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

예상 출력(경로만 탭이 있는 새 줄에 있어야 함):

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

답변1

find또는 다음을 통해 sed출력을 파이프하는 것이 더 쉬울 수 있습니다 awk.

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

답변2

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"
}

서브쉘에서 발생하기 때문에 read중괄호를 사용하여 read 명령을 printf 명령과 그룹화했습니다. 변수 설정과 사용은 동일한 서브셸에서 수행되어야 합니다.

답변3

find $dir -printf "%s **\n**%p\n" | sort -n | tail -1

위의 명령을 사용하십시오.

관련 정보