我想将一行变成两条新行。
我的代码:
#!/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
or管道输出可能会更容易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
发生在子 shell 中,因此我使用大括号将 read 命令与 printf 命令分组。设置变量和使用它们必须在同一个子 shell 中进行。
答案3
find $dir -printf "%s **\n**%p\n" | sort -n | tail -1
使用上面的命令。