ディレクトリリストを逆順に並べ替える

ディレクトリリストを逆順に並べ替える

ディレクトリのリストをアルファベットの逆順に並べ替えようとしています。

なぜランダムな注文を受けますか?

    ls -l /usr/bin/ | sort -r

編集:コマンドソートを使用する必要がありました。

答え1

ls整理しよう:

ls -l -r /usr/bin

そうでなければ

ls -lr /usr/bin

リストを逆の順序で並べ替える標準-rオプションです。修正タイムスタンプのソートに使用するようにls要求すると、リストの順序も逆になります。ls-t-r

コマンドパイプラインは、出力の権限、所有権などに基づいてソートされ、2つの項目ls -lについて他のすべての情報が同じでない限り、ファイル名は考慮されません。


これは聞いていませんが、一般的なもので、通常は出力ソートについて尋ねた後、次のステップですls...実際に最初または最後にソートされたディレクトリのリストからファイル名を抽出するには、使用しないでくださいls、代わりに配列または位置パラメータを使用してください。

最初のファイル名:

names=(/usr/bin/*)
printf '%s\n' "${names[0]}"

または

set -- /usr/bin/*
printf '%s\n' "$1"

最終ファイル名:

names=(/usr/bin/*)
printf '%s\n' "${names[-1]}"

または

set -- /usr/bin/*
shift "$(( $# - 1 ))"
printf '%s\n' "$1"

同様に、最近変更されたファイル(またはディレクトリ)を取得する最良の方法bashは次のとおりです。

set -- /usr/bin/*
newest=$1; shift
for pathname do
    [ "$pathname" -nt "$newest" ] && newest=$pathname
done

printf 'Newest: %s\n' "$newest"

最も古い(最も最近修正された)ファイルをインポートするように-ntテストを変更します。-ot

答え2

文字列全体をキーとしてソートしようとしています。

オブジェクト名は列9に書き込まれるため、以下を使用する必要があります。

ls -l /usr/bin/ | sort -k9 -r

関連情報