3

ディレクトリ内で 4 番目に小さい (非表示でない) ファイルの名前を見つける必要があるとします。

これを行うための正しいコマンドは何ですか? 私がls -lheadtailline、およびawk '{print}'ステートメントしか知らない男だとします。

4

2 に答える 2

3

From man ls:-S出力をサイズの降順で並べ替え、出力-rの順序を逆にします。

だから私の解決策は次のようになります

ls -rS | sed -n '4p'

または、代わりに

ls -rS | awk 'NR==4'
于 2013-03-19T11:20:53.540 に答える
1

ファイル名のスペースや改行などの奇妙な文字を処理するのは難しく、エラーが発生しやすいため、解析ls安全ではありません。

null で終わる行末を使用するため、より堅牢な次のアプローチを使用することをお勧めします。

count=0
while IFS= read -r -d '' line; do
    ((++count == 4)) && echo "${line#* }" && break
done < <(find . -type f -maxdepth 1 -printf '%s %p\0' | sort -zn)
于 2013-03-19T12:40:48.950 に答える