
1行を2行に変更したいです。
私のコード:
#!/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
上記のコマンドを使用してください。