我正在计算整个目录的文件和目录名的字符数。
find . -printf "%f/n" | sed 's/./&\n/g' | sort | uniq -c
输出:
234 _ 162 / 341 . 342 0 156 1 217 2 99 3 ...
但我还需要在找到的字符的同时显示十进制,十六进制和正常表示的列表:
示例:
066 0x42 'A' ... 090 0x5A 'Z'
我尝试过使用不同格式选项的hexdump
,但这对我没用。
可以使用 hexdump 吗?
答案 0 :(得分:1)
这是我的答案之后的实施:
find . -printf "%f\n" | sed "s/./&\n/g" | sort | uniq | tr -d '\n' | hexdump -v -e '/1 "%03d "' -e '/1 "0x%02X "' -e '/1 "<%c>\n"'
输出:
060 0x3C <<>
062 0x3E <>>
058 0x3A <:>
063 0x3F <?>
046 0x2E <.>
097 0x61 <a>
098 0x62 <b>
099 0x63 <c>
100 0x64 <d>
101 0x65 <e>
069 0x45 <E>
102 0x66 <f>
104 0x68 <h>
072 0x48 <H>
105 0x69 <i>
108 0x6C <l>
109 0x6D <m>
110 0x6E <n>
078 0x4E <N>
111 0x6F <o>
195 0xC3 <�>
182 0xB6 <�>
...
答案 1 :(得分:0)
可以用hexdump完成吗?
是:
hexdump
请参阅r.now().sub(900)
手册页末尾的示例。
答案 2 :(得分:0)
hexdump / hd的替代方法是xxd。。xxd可以隐蔽地返回十六进制并返回。但是我用32位数据警告您,并且XOR警告我发现我得到46而不是41的错误。另外还有大写和小写十六进制的选项,默认为BIG ENDIAN,但是有LITTLE ENDIAN的选项,记住输出是char字符串,而不是等效的十六进制。
我认为您正在寻找hexdump -C
命令,请参见man hexdump
或man xxd
。
PS> @ Dummy00001十六进制转储“ / 1”有什么作用?如果我省略它,则得到相同的结果 @ebart为什么sed脚本替换操作中会有一个'g'字符,所以在行(&)末尾用\ n替换每个字符:“ s /./& \ n / g”
来自下面的链接: X / X格式称为计数说明符,因此2/4表示2个4字节(32位)值的实例。 %08x格式表示将值输出为带有前导零的8位十六进制数字。
此命令不是您的问题的答案,但显示了十六进制转储格式的完成方式: hexdump -s 446 -n 64 -v -e'1/1“%02x” 3/1“%3d” 1/1“%02x” 3/1“%3d” 2/4“