ディレクトリ内のエントリのイニシャルをカンマで区切ったリストを取得しますか?

ディレクトリ内のエントリのイニシャルをカンマで区切ったリストを取得しますか?

重複なしで先行「」。エントリを除いて、ディレクトリ内のファイル名とディレクトリ名の最初の文字をカンマで区切って大文字と小文字を区別しないリストを生成するにはどうすればよいですか?再帰的である必要はありません。 1つのレベルの深さだけで済みます。

たとえば、lsで作成されたディレクトリは...

drwxr-xr-x+ 10 bryan  staff   340B Jun  6 15:32 .
drwxrwx---@ 27 bryan  staff   918B Jun  6 15:29 ..
-rw-r--r--@  1 bryan  staff   6.0K Jun  6 15:32 .secrets
drwxr-xr-x+  2 bryan  staff    68B Jun  6 15:30 Apoptosis
drwxr-xr-x+  2 bryan  staff    68B Jun  6 15:32 Fanciful Notions
-rwxr-x---@  1 bryan  staff   351B Jun  2 16:57 Pungent
-rwxr-x---@  1 bryan  staff   351B Jun  2 16:57 Zoophilia
-rwxr-x---@  1 bryan  staff   351B Jun  2 16:57 addled_symbionts
-rwxr-x---@  1 bryan  staff   351B Jun  2 16:57 putrid
drwxr-xr-x+  2 bryan  staff    68B Jun  6 15:30 zuegma mandegreen

…帰りたい…

a, f, p, z

私はBSDを使用していて愚かですが、これはうまくいきません。

ベストアンサー1

Shell/coreutils を使用してこれを行うことができます。

for f in *; do printf "%s\n"  "${f:0:1}" ; done | 
    tr '[A-Z]' '[a-z]' | sort | uniq | paste -d, -s

この構文は、位置から始まる${var:X:Y}変数のY文字の長い部分文字列を出力します。$varX

おすすめ記事