Я хочу что-то вроде этого:
find "$dir" -type f -printf '%i:<alpha_char_count_of_base_filename>:%d:%p\n'
Затем я хочу отсортировать сначала по номеру inode, а затем по 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_file в неправильном месте. Я также не уверен, что это хорошая форма программирования.
Моя книга по программированию оболочки не предлагает мне ничего, что помогло бы мне найти решение этого конкретного вопроса. Так же как и Google (пока).
Это будет использоваться в качестве решения этого вопроса.