回答:
ターミナルで: cd
問題のディレクトリに
for x in `ls -1 | sed -e 's/^\(.\).*/\1/' | sort -u`; do
mkdir $x && mv -i ${x}?* $x
done
これはあなたが始める前にどのファイルも単一の文字名を持っていないと仮定します。もしそうなら、あなたは上記の手順を実行する前にそれらを脇に移動するかもしれません:
mkdir singles && mv ? singles
その後、それらを適切な場所に移動します。
編集する いくつかの注意事項については、以下のコメントを参照してください。長すぎるコマンドラインで問題が発生した場合は、2行目を次のように置き換えることができます。
mkdir $x && find . -maxdepth 1 -name "${x}?*" -exec mv -i {} $x \;
これは、ファイル名がマルチバイト文字(Äやあなど)で始まっている場合にも機能します。
ls | iconv -f utf8-mac -t utf-8 | LC_CTYPE=UTF-8 cut -c1 | uniq | while IFS= read -r l; do
f=("$l"*)
mkdir -- "$l"
mv -- "${f[@]}" "$l"
done
iconv -f utf8-mac -t utf-8
HFS +で使用されている部分的に分解された形式のテキストを事前構成された形式に変換します。見る VFSのテキストエンコーディング または この質問 。 LC_CTYPE=UTF-8
作る cut -c1
マルチバイト文字を単一文字と見なします。