名前の一部としてファイルをソートする方法は?

名前の一部としてファイルをソートする方法は?

次の文書が与えられた場合:

ABC38388.SC01.StatueGrade_MKP
ABC38388.SC02.Statue_GKP
DEF38389.SC03.Statue_HKP
XYZ38390.SC00.Statue_WKP

次の値に基づいてどのようにリストできますかSC

XYZ38390.SC00.Statue_WKP
ABC38388.SC01.StatueGrade_MKP
ABC38388.SC02.Statue_GKP
DEF38389.SC03.Statue_HKP

ベストアンサー1

ファイル名にスペースやその他の奇妙な文字が含まれていないこの特別な場合は、ls次のようにパイプできますsort

$ ls -d -- *.SC* | sort -t. -k2
XYZ38390.SC00.Statue_WKP
ABC38388.SC01.StatueGrade_MKP
ABC38388.SC02.Statue_GKP
DEF38389.SC03.Statue_HKP

-tフィールド区切り文字を設定し、2番目のフィールド-k2で始まる行の部分に基づいてソートするように指示します(2番目のフィールドの場合)。sort-k2,2ただ)。

より複雑な場合は、各ファイル名の後にNULL文字()を印刷してから、その\0オプションを使用してGNUにパイプしてNULL区切りの行を読み取るように指示し、最後に次のように変更します。sort-ztr\0\n

printf '%s\0' *SC* | sort -zt. -k2 | tr '\0' '\n'

おすすめ記事