当前位置: 技术问答>linux和unix
谁知道 ls -l 的默认排序方式是什么,opendir,readdir 函数的排序方式是什么
来源: 互联网 发布时间:2015-12-23
本文导语: 谁知道 ls -l 的默认排序方式是什么,opendir,readdir 函数的排序方式是什么 | ls -l如前面各位所说。排序是按ASCII字符顺序排列,比如数字 小于 大写字母 小于 小写字母 opendir/readdir则是以...
谁知道 ls -l 的默认排序方式是什么,opendir,readdir 函数的排序方式是什么
|
ls -l如前面各位所说。排序是按ASCII字符顺序排列,比如数字 小于 大写字母 小于 小写字母
opendir/readdir则是以文件系统中的顺序返回,也就是文件项在目录项中的位置为顺序,所以并没有排序。
这一点你写个小程序试一下就知道了。
比如下面的perl程序:
#!/usr/bin/perl -w
my $path = "/tmp";
opendir DIR, $path;
my @arr1 = readdir DIR;
foreach(@arr1){
print "$_n";
}
closedir DIR;
opendir/readdir则是以文件系统中的顺序返回,也就是文件项在目录项中的位置为顺序,所以并没有排序。
这一点你写个小程序试一下就知道了。
比如下面的perl程序:
#!/usr/bin/perl -w
my $path = "/tmp";
opendir DIR, $path;
my @arr1 = readdir DIR;
foreach(@arr1){
print "$_n";
}
closedir DIR;
|
-l: 显示出文件的大小,权限,文件的拥有权。
|
a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。
-c 输出文件的 i 节点的修改时间,并以此排序。
-d 将目录象文件一样显示,而不是显示其下的文件。
-e 输出时间的全部信息,而不是输出简略信息。
-f -U 对输出的文件不排序。
-g 无用。
-i 输出文件的 i 节点的索引信息。
-k 以 k 字节的形式表示文件的大小。
-l 列出文件的详细信息。
-m 横向输出文件名,并以“,”作分格符。
-n 用数字的 UID,GID 代替名称。
-o 显示文件的除组信息外的详细信息。
-p -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通
文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套
接字(sockets)。
-q 用?代替不可输出的字符。
-r 对目录反向排序。
-s 在每个文件名后输出该文件的大小。
-t 以时间排序。
-u 以文件上次被访问的时间排序。
-x 按列输出,横向排序。
-A 显示除 “.”和“..”外的所有文件。
-B 不输出以 “~”结尾的备份文件。
-C 按列输出,纵向排序。
-G 输出文件的组的信息。
-L 列出链接文件名而不是链接到的文件。
-N 不限制文件长度。
-Q 把输出的文件名用双引号括起来。
-R 列出所有子目录下的文件。
-S 以文件大小排序。
-X 以文件的扩展名(最后一个 . 后的字符)排序。
-1 一行只输出一个文件。
--color=no 不显示彩色文件名
--help 在标准输出上显示帮助信息。
--version 在标准输出上输出版本信息并退出。
-b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。
-c 输出文件的 i 节点的修改时间,并以此排序。
-d 将目录象文件一样显示,而不是显示其下的文件。
-e 输出时间的全部信息,而不是输出简略信息。
-f -U 对输出的文件不排序。
-g 无用。
-i 输出文件的 i 节点的索引信息。
-k 以 k 字节的形式表示文件的大小。
-l 列出文件的详细信息。
-m 横向输出文件名,并以“,”作分格符。
-n 用数字的 UID,GID 代替名称。
-o 显示文件的除组信息外的详细信息。
-p -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通
文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套
接字(sockets)。
-q 用?代替不可输出的字符。
-r 对目录反向排序。
-s 在每个文件名后输出该文件的大小。
-t 以时间排序。
-u 以文件上次被访问的时间排序。
-x 按列输出,横向排序。
-A 显示除 “.”和“..”外的所有文件。
-B 不输出以 “~”结尾的备份文件。
-C 按列输出,纵向排序。
-G 输出文件的组的信息。
-L 列出链接文件名而不是链接到的文件。
-N 不限制文件长度。
-Q 把输出的文件名用双引号括起来。
-R 列出所有子目录下的文件。
-S 以文件大小排序。
-X 以文件的扩展名(最后一个 . 后的字符)排序。
-1 一行只输出一个文件。
--color=no 不显示彩色文件名
--help 在标准输出上显示帮助信息。
--version 在标准输出上输出版本信息并退出。
|
ls -l以文件名的首字母排序。
The opendir function returns a pointer to a DIR structure, and we pass this pointer to the readdir function. We don't care what's in the DIR structure. We then call readdir in a loop, to read each directory entry. The readdir function returns a pointer to a dirent structure or, when it's finished with the directory, a null pointer. All we examine in the dirent structure is the name of each directory entry (d_name). Using this name, we could then call the stat function (Section 4.2) to determine all the attributes of the file.
NAME
opendir - open a directory
SYNOPSIS
#include
#include
DIR *opendir(const char *name);
DESCRIPTION
The opendir() function opens a directory stream corresponding to the
directory name, and returns a pointer to the directory stream. The
stream is positioned at the first entry in the directory.
RETURN VALUE
The opendir() function returns a pointer to the directory stream or
NULL if an error occurred.
readdir reads one dirent structure from the directory pointed at by fd
into the memory area pointed to by dirp. The parameter count is
ignored; at most one dirent structure is read.
The dirent structure is declared as follows:
struct dirent
{
long d_ino; /* inode number */
off_t d_off; /* offset to this dirent */
unsigned short d_reclen; /* length of this d_name */
char d_name [NAME_MAX+1]; /* file name (null-terminated) */
}
d_ino is an inode number. d_off is the distance from the start of the
directory to this dirent. d_reclen is the size of d_name, not counting
the null terminator. d_name is a null-terminated file name.
RETURN VALUE
On success, 1 is returned. On end of directory, 0 is returned. On
error, -1 is returned, and errno is set appropriately.
The opendir function returns a pointer to a DIR structure, and we pass this pointer to the readdir function. We don't care what's in the DIR structure. We then call readdir in a loop, to read each directory entry. The readdir function returns a pointer to a dirent structure or, when it's finished with the directory, a null pointer. All we examine in the dirent structure is the name of each directory entry (d_name). Using this name, we could then call the stat function (Section 4.2) to determine all the attributes of the file.
NAME
opendir - open a directory
SYNOPSIS
#include
#include
DIR *opendir(const char *name);
DESCRIPTION
The opendir() function opens a directory stream corresponding to the
directory name, and returns a pointer to the directory stream. The
stream is positioned at the first entry in the directory.
RETURN VALUE
The opendir() function returns a pointer to the directory stream or
NULL if an error occurred.
readdir reads one dirent structure from the directory pointed at by fd
into the memory area pointed to by dirp. The parameter count is
ignored; at most one dirent structure is read.
The dirent structure is declared as follows:
struct dirent
{
long d_ino; /* inode number */
off_t d_off; /* offset to this dirent */
unsigned short d_reclen; /* length of this d_name */
char d_name [NAME_MAX+1]; /* file name (null-terminated) */
}
d_ino is an inode number. d_off is the distance from the start of the
directory to this dirent. d_reclen is the size of d_name, not counting
the null terminator. d_name is a null-terminated file name.
RETURN VALUE
On success, 1 is returned. On end of directory, 0 is returned. On
error, -1 is returned, and errno is set appropriately.
|
up
|
ls -l: 默认的以字母的先后顺序排列的
opendir: 有点不一样,这个是以文件名的第一个字母的大小排序的
(如果第一个相同,就比第二个,以此类推),所以最小的先出来
opendir: 有点不一样,这个是以文件名的第一个字母的大小排序的
(如果第一个相同,就比第二个,以此类推),所以最小的先出来
|
ls -l以文件名的首字母排序。