我有一个文件名目录,例如:
DataFile_1.txt
DataFile_2.txt
...
DataFile_9.txt
DataFile_10.txt
DataFile_11.txt
...
DataFile_99.txt
DataFile_100.txt
DataFile_101.txt
...
Run Code Online (Sandbox Code Playgroud)
它们不是按上述顺序排列的,但我希望它们是这样的。ls 以随机顺序生成它们,例如
DataFile_100.txt
DataFile_2.txt
DataFile_19.txt
DataFile_9.txt
...
Run Code Online (Sandbox Code Playgroud)
我需要脚本的输出是按“_”和“.”之间的数值排序的文件。特点。我无法找到一种方法来使用排序命令,以人类的方式对这些分隔符之间的数值进行排序。
ls | sort -k 10 --human-numeric-sort仍然把 the 放在-8.the 之后_79.和之前_80.
我有一个最近在1990年编译的C程序,它读取和写入一些二进制文件.可执行文件仍然可以正常工作,读取和写入它们.我需要重新编译源代码,添加一些功能,然后使用代码,读取一些旧数据,并输出其他信息.
当我重新编译代码而没有更改并执行它时,它无法读取旧文件,当我尝试处理读入内存区域的数据时出现分段错误.我认为问题可能是前面写的二进制文件使用4个8位字节整数,8个字节长整数和4个字节浮点数.我的机器上的体系结构现在使用64位字而不是32字节.因此,当我从读入的数据中提取整数时,它会错误地对齐并设置一个超出程序空间范围的数组索引.
在Mac OS X 10.12.6上,使用它的C编译器,它可能是:
Apple LLVM version 8.0.0 (clang-800.0.33.1)
Target: x86_64-apple-darwin16.7.0
Run Code Online (Sandbox Code Playgroud)
是否有编译器开关将整数和浮点数的编译长度设置为上述值?如果没有,我如何让代码正确读取数据?