한 줄을 두 줄로 바꾸고 싶습니다.
내 코드:
#!/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
위의 명령을 사용하십시오.