子ディレクトリのファイルが親ディレクトリのファイルの前にリストされるように、ファイル名のリストをソートします。

子ディレクトリのファイルが親ディレクトリのファイルの前にリストされるように、ファイル名のリストをソートします。

次のファイルのリストを含むテキストファイルがあります。

file
A1/file
A1/B1/file
A2/file

サブディレクトリ内のファイルが親ディレクトリ内の他のファイルの前にリストされるようにソートするにはどうすればよいですか?

A1/B1/file
A1/file
A2/file
file

ベストアンサー1

簡単な方法は次のとおりです。

awk 'BEGIN{FS="/"; OFS="\t"}{print NF, $0}' file | sort -rn | cut -f2-

A1/B1/file
A2/file
A1/file
file

問題のような単純なケースで動作します。

ディレクトリでソートしたい場合:

awk 'BEGIN{FS="/"; OFS="\t"}{print NF, $0}' file | sort -k1,1rn -k2 | cut -f2-

A1/B1/file
A1/file
A2/file
file

おすすめ記事