Ich möchte so etwas:
find "$dir" -type f -printf '%i:<alpha_char_count_of_base_filename>:%d:%p\n'
Dann möchte ich zuerst nach Inode-Nummer sortieren, dann nach alpha_char_count_of_base_filename. Ich glaube, ich habe einen Teil der Lösung herausgefunden.
Ich weiß, dass ich den alpha_char_count_of_base_filename mit diesem Code erhalten kann:
basename "$filename" | tr -cd [:alpha:] | wc -m
Es funktioniert jedoch nicht, so etwas zu versuchen (nicht lachen):
find "$dir" -type f -printf '%i:$(basename -print | tr -cd [:alpha:] | wc -m):%d:%p\n'
Ich habe viele Ideen ausprobiert und habe keine funktionierende Lösung gefunden. Hier ist eine andere Idee, die ich ausprobiert habe:
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";}'
Das scheint mich näher zu bringen, aber es gibt den alpha_char_count_of_base_filename an der falschen Stelle aus. Ich bin mir auch nicht sicher, ob das eine gute Programmierform ist.
Mein Shell-Programmierbuch bietet mir nichts, was mir helfen könnte, eine Lösung für diese spezielle Frage zu finden. Google auch nicht (bis jetzt).
Dies wird als Lösung für diese Frage verwendet .
%f
Formatierungsspezifizierer, um den Basisnamen an awk zu senden, wo er durch die "