私はこのようなものが欲しい:
find "$dir" -type f -printf '%i:<alpha_char_count_of_base_filename>:%d:%p\n'
それでは、最初にiノード番号、次にalpha_char_count_of_base_filenameの順に並べ替えます。私は解決策の一部を考え出したと思います。
私はこのコードでalpha_char_count_of_base_filenameを取得できることを知っています:
basename "$filename" | tr -cd [:alpha:] | wc -m
しかし、このようなことを試みても(笑わないで)うまくいきません。
find "$dir" -type f -printf '%i:$(basename -print | tr -cd [:alpha:] | wc -m):%d:%p\n'
私はたくさんのアイデアを試してみましたが、実用的な解決策を見つけたことはありません。これは私が試したもう一つのアイデアです:
find "$dir" -type f -printf '%i:%d:%p\n' | awk 'BEGIN{FS=":";OFS=":";} {print $1,system("basename "$3" | tr -cd [:alpha:] | wc -m"),$2,$3"\n";}'
これは私に近づいているように見えますが、間違った場所にalpha_char_count_of_base_filenameを表示します。私はそれが良いプログラミング形式であるという確信もありません。
私のシェルプログラミングの本では、この特定の問題に対する解決策を思いつくのに役立つものは何も提供していません。グーグルも(これまで)いません。
これはの解決策として使用されます この質問 。