Random oneliners: Difference between revisions
No edit summary |
No edit summary |
||
| Line 15: | Line 15: | ||
Processing of a big filesystem trees can take a considerable time, as this dumb oneliner sorts the letters before deduplicating them. | Processing of a big filesystem trees can take a considerable time, as this dumb oneliner sorts the letters before deduplicating them. | ||
== List extensions in a file tree == | |||
This one is just like [[#List characters used in a file tree]], but it operates on file extensions. | |||
<syntaxhighlight lang="shell">find -name '?*.*' -type f | sed 's/.*[.]//' | sort | uniq | fmt</syntaxhighlight> | |||
Consider adding another <code>uniq</code> to save memory when sorting large trees. | |||
Example output (executed on the FreeRTOS source tree): | |||
<pre>asm bat c cfg cmake config h idx inc md pack png py readme rev s S s26 | |||
s43 s79 s82 s85 s90 sample sh src txt url xc yaml yml</pre> | |||
Note the <code>find</code> pattern: It requires filenames with a dot and at least one character before it. This omits hidden files, which we usually don't want in our output. | |||
[[Category:Unix shell]] | [[Category:Unix shell]] | ||
[[Category:GNU bash]] | [[Category:GNU bash]] | ||
Latest revision as of 06:45, 17 October 2026
Here I place some useful/interesting/silly oneliners – mostly in GNU bash and Perl.
List characters used in a file tree
This produces a neatly formatted listing of special characters in a given directory tree. (Note the slash, which is the path separator.)
find directory/ | fold -w1 | sort | uniq | fmtExample output:
_ - @ / = 0 1 2 3 4 5 6 7 8 9 a A b B c C d D e E f F g G h H i j J l L m n N o p P q r R s S t u U v w x y Y
Note that this breaks for whitespace (ASCII space is rendered as a blank line at the beginning of the output) and control characters, not to mention Unicode.
Processing of a big filesystem trees can take a considerable time, as this dumb oneliner sorts the letters before deduplicating them.
List extensions in a file tree
This one is just like #List characters used in a file tree, but it operates on file extensions.
find -name '?*.*' -type f | sed 's/.*[.]//' | sort | uniq | fmtConsider adding another uniq to save memory when sorting large trees.
Example output (executed on the FreeRTOS source tree):
asm bat c cfg cmake config h idx inc md pack png py readme rev s S s26 s43 s79 s82 s85 s90 sample sh src txt url xc yaml yml
Note the find pattern: It requires filenames with a dot and at least one character before it. This omits hidden files, which we usually don't want in our output.