dir linux_how-can-i-see-the-size-of-files-and-directories-in-linux - CSDN
  • Linux下命令ls和dir都有打印目录内容的功能 名词解释 ls - list directy contents 是linux下的显示目录内容的命令. DIR,是directory的缩写,是目录的意思.也是打开Linux目录内容的命令。 区别: * ls 是Linux...

    在Linux下命令ls和dir都有打印目录内容的功能
    名词解释

    • ls - list directy contents 是linux下的显示目录内容的命令.
    • DIR,是directory的缩写,是目录的意思.也是打开Linux目录内容的命令。

    区别:
    * ls 是Linux的原装命令,dir是原来dos的命令,Linux选择兼容了此个dos命令,所以dir和ls在功能上是一样的!只是由来有所区别!

    演示

    [ds@iz1zdpxadujj9vz text]$ dir
    a.out  hellon  hellon.c
    [ds@iz1zdpxadujj9vz text]$ ls
    a.out  hellon  hellon.c
    [ds@iz1zdpxadujj9vz text]$ ^C
    [ds@iz1zdpxadujj9vz text]$ 

    结论:
    在Linux中,dir和ls有着相同的作用!

    展开全文
  • ...最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的...首先说说DIR这一结构体,以下为DIR结构体的定义: struct __dirstream  {  void *__fd;   char *__data;

    copy from 点击打开链接

    最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅。

    首先说说DIR这一结构体,以下为DIR结构体的定义:

    1. struct __dirstream   
    2.    {   
    3.     void *__fd;    
    4.     char *__data;    
    5.     int __entry_data;    
    6.     char *__ptr;    
    7.     int __entry_ptr;    
    8.     size_t __allocation;    
    9.     size_t __size;    
    10.     __libc_lock_define (, __lock)    
    11.    };   
    12.   
    13. typedef struct __dirstream DIR;  

     

    DIR结构体类似于FILE,是一个内部结构,以下几个函数用这个内部结构保存当前正在被读取的目录的有关信息(摘自《UNIX环境高级编程(第二版)》)。函数 DIR *opendir(const char *pathname),即打开文件目录,返回的就是指向DIR结构体的指针,而该指针由以下几个函数使用:

     

    1. struct dirent *readdir(DIR *dp);   
    2.   
    3. void rewinddir(DIR *dp);   
    4.   
    5. int closedir(DIR *dp);   
    6.   
    7. long telldir(DIR *dp);   
    8.   
    9. void seekdir(DIR *dp,long loc);  

     

    关于DIR结构,我们知道这么多就可以了,没必要去再去研究他的结构成员。

    接着是dirent结构体,首先我们要弄清楚目录文件(directory file)的概念:这种文件包含了其他文件的名字以及指向与这些文件有关的信息的指针(摘自《UNIX环境高级编程(第二版)》)。从定义能够看出,dirent不仅仅指向目录,还指向目录中的具体文件,readdir函数同样也读取目录下的文件,这就是证据。以下为dirent结构体的定义:

     

    1. struct dirent   
    2. {   
    3.   long d_ino; /* inode number 索引节点号 */  
    4.      
    5.     off_t d_off; /* offset to this dirent 在目录文件中的偏移 */  
    6.      
    7.     unsigned short d_reclen; /* length of this d_name 文件名长 */  
    8.      
    9.     unsigned char d_type; /* the type of d_name 文件类型 */  
    10.      
    11.     char d_name [NAME_MAX+1]; /* file name (null-terminated) 文件名,最长255字符 */  
    12. }  

     

    从上述定义也能够看出来,dirent结构体存储的关于文件的信息很少,所以dirent同样也是起着一个索引的作用,如果想获得类似ls -l那种效果的文件信息,必须要靠stat函数了。

    通过readdir函数读取到的文件名存储在结构体dirent的d_name成员中,而函数

    int stat(const char *file_name, struct stat *buf);

    的作用就是获取文件名为d_name的文件的详细信息,存储在stat结构体中。以下为stat结构体的定义:

     

    1. struct stat {   
    2.   
    3.         mode_t     st_mode;       //文件访问权限   
    4.   
    5.         ino_t      st_ino;       //索引节点号   
    6.   
    7.         dev_t      st_dev;        //文件使用的设备号   
    8.   
    9.         dev_t      st_rdev;       //设备文件的设备号   
    10.   
    11.         nlink_t    st_nlink;      //文件的硬连接数   
    12.   
    13.         uid_t      st_uid;        //所有者用户识别号   
    14.   
    15.         gid_t      st_gid;        //组识别号   
    16.   
    17.         off_t      st_size;       //以字节为单位的文件容量   
    18.   
    19.         time_t     st_atime;      //最后一次访问该文件的时间   
    20.   
    21.         time_t     st_mtime;      //最后一次修改该文件的时间   
    22.   
    23.         time_t     st_ctime;      //最后一次改变该文件状态的时间   
    24.   
    25.         blksize_t st_blksize;    //包含该文件的磁盘块的大小   
    26.   
    27.         blkcnt_t   st_blocks;     //该文件所占的磁盘块   
    28.   
    29.       };  

     

    这个记录的信息就很详细了吧,呵呵。

    最后,总结一下,想要获取某目录下(比如a目下)b文件的详细信息,我们应该怎样做?

    首先,我们使用opendir函数打开目录a,返回指向目录a的DIR结构体c。

    接着,我们调用readdir( c)函数读取目录a下所有文件(包括目录),返回指向目录a下所有文件的dirent结构体d。

    然后,我们遍历d,调用stat(d->name,stat *e)来获取每个文件的详细信息,存储在stat结构体e中。

    总体就是这样一种逐步细化的过程,在这一过程中,三种结构体扮演着不同的角色。

    ---------------------------------------------------------------------华丽丽的分割线---------------------------------------------------------------------------------------------------------------------------------------------
    补充:
       首先,关于上文提到的“DIR结构体类似于FILE,是一个内部结构”此句中的内部结构不是很明白,后来看到一遍博文有介绍FILE结构,具体如下:
    博文地址:点击打开链接
    struct file结构体定义在include/linux/fs.h中定义。文件结构体代表一个打开的文件,系统中的每个打开的文件在内核空间都有一个关联的 struct file。它由内核在打开文件时创建,并传递给在文件上进行操作的任何函数。在文件的所有实例都关闭后,内核释放这个数据结构。在内核创建和驱动源码中,struct file的指针通常被命名为file或filp。
    此处说FILE结构是在内核打开文件时创建的。参考以前的关于FILE操作的代码可以发现,我们在使用FILE结构时是直接声明一个FILE结构的指针,例如:
    FILE *fp
    然后使用fopen函数返回一个FILE结构指针给fp。我们并没有声明一个结构体,而只是声明该结构体的指针。
    所以本人猜测,具体的结构体的内存分配已经由内核帮我们完成了。
    DIR结构的使用方法和FILE类似,在《Linux程序设计第四版》的P104有一个打印目录下所有文件及目录的程序,代码如下:
    1. #include <unistd.h>  
    2. #include <stdio.h>  
    3. #include <dirent.h>  
    4. #include <string.h>  
    5. #include <sys/stat.h>  
    6. #include <stdlib.h>  
    7.   
    8.   
    9. void printdir(char *dir, int depth)  
    10. {  
    11.     DIR *dp;  
    12.     struct dirent *entry;  
    13.     struct stat statbuf;  
    14.   
    15.     if ((dp = opendir(dir)) == NULL) {  
    16.         fprintf(stderr, "Can`t open directory %s\n", dir);  
    17.         return ;  
    18.     }  
    19.       
    20.     chdir(dir);  
    21.     while ((entry = readdir(dp)) != NULL) {  
    22.         lstat(entry->d_name, &statbuf);  
    23.         if (S_ISDIR(statbuf.st_mode)) {  
    24.             if (strcmp(entry->d_name, ".") == 0 ||   
    25.                 strcmp(entry->d_name, "..") == 0 )    
    26.                 continue;     
    27.             printf("%*s%s/\n", depth, "", entry->d_name);  
    28.             printdir(entry->d_name, depth+4);  
    29.         } else  
    30.             printf("%*s%s\n", depth, "", entry->d_name);  
    31.     }  
    32.     chdir("..");  
    33.     closedir(dp);     
    34. }  
    35.   
    36.   
    37. int main(int argc, char *argv[])  
    38. {  
    39.     char *topdir = ".";  
    40.     if (argc >= 2)  
    41.         topdir = argv[1];  
    42.   
    43.     printf("Directory scan of %s\n", topdir);  
    44.     printdir(topdir, 0);  
    45.     printf("done.\n");  
    46.     exit(0);  
    47. }  

    在这个程序中我们使用的DIR结构也只是声明了该结构的指针,那么DIR结构应该也是同FILE结构一样,在打开一个目录的时候,由内核帮我们分配该结构体的内存。
    dirent结构也是如此。但stat结构却是要我们自己声明结构体的。
    展开全文
  • 以下是linuxdir命令参数的使用方法. linuxdir命令参数功能: linuxdir命令参数支持的命令格式为: DIR [filename] [/O[sortorder]] [/S] [/W] linuxdir命令参数不区分大小写,支持多参数。 ...

    以下是linux中dir命令参数的使用方法.

    linux中dir命令参数功能:

    linux中dir命令参数支持的命令格式为:

    DIR [filename] [/O[sortorder]] [/S] [/W]

    linux中dir命令参数不区分大小写,支持多参数。

    主要支持以下参数:

    /ON 按名称排序

    /OE 按扩展名排序

    /OS 按大小排序

    /OD 按修改时间排序

    /S 显示子目录文件

    /W 采用宽列表格式

    1.linux中dir命令参数的思想是:通过对各参数的判断,构造出DOS中对应的命令字符串(var),运行之。

    2.由于事先无法确定命令有多少参数,用shift语句让参数左移,通过case语句对$1参数的情况进行判断,将其对应bash下的命令参数加到将要运行的命令字符串的后面。

    3.需要格外处理的是:linux中dir命令参数对应ls -a -l;而dir /w对应ls -a -m。这个通过对$*中是否存在“/w”或“/W”进行处理,具体方法是,记录“/w”或“/W”出现的次数,如果最后次数为0,则将要运行的命令字符串初始值为ls -a -l,否则为ls -a -m。然后对其他参数的情况进行处理(通过case语句)。

    linux中dir命令参数代码:

    if [ "$1" = "/?" ]
    then 
    echo “show the files in the directory or subdirectory”
    echo “DIR [filename] [/O[sortorder]] [/S] [/W]“
    echo “/O sort by”
    echo “sortorder N by name S by size”
    echo ” E by extension D by time”
    echo “/S show the files in the directory and subdirectory”
    echo “/W use wide list format “
    exit 1
    fi
    i=0
    var=ls
    varapp=”"
    for id
    do
    if [ "$id" = "/W" ]
    then
    i=`expr $i + 1`
    fi
    if [ "$id" = "/w" ]
    then
    i=`expr $i + 1`
    fi
    done
    if [ $i -eq 0 ]
    then 
    varapp=” -a -l”
    else
    varapp=” -a -m”
    fi
    if [ $# -gt 0 ]
    then
    while [ $# -gt 0 ]
    do
    case $1 in
    /OE|/oe|/Oe|/oE) var=$var$” -X”
    ;;
    /OD|/od|/Od|/oD) var=$var$” -t”
    ;;
    /OS|/os|/Os|/oS) var=$var$” -s”
    ;;
    /ON|/on|/On|/oN) var=$var
    ;;
    /S|/s) var=$var$” -R”
    ;;
    /W|/w) var=$var
    ;;
    *) var=$var” $1″
    esac
    shift
    done
    fi
    var=$var$varapp
    $var

    以上是linux中dir命令参数的使用方法.\

    1. 转载请注明:爱分享 » linux中dir命令参数应用

    2. http://www.ihref.com/read-11130.html

    展开全文
  • 在windows环境中, 开发环境时:user.dir 指向的是项目的根目录; 如果将项目部署到tomcat下,user.dir指向的路径:当前用户的桌面 ...而在linux环境下,将项目部署到tomcat中 指向的路径为tomcat的bin目录。 ...

    在windows环境中,

    开发环境时:user.dir 指向的是项目的根目录;

    如果将项目部署到tomcat下,user.dir指向的路径:当前用户的桌面

     

    而在linux环境下,将项目部署到tomcat中

    指向的路径为tomcat的bin目录。

    展开全文
  • windows系统中 tomcat运行项目 其中 System.getProperty("user.dir") 输出的位置是当前tomcat所在...linux  System.getProperty("user.dir")输出的位置是当前tomcat所在位置webapps目录里...
  • Linux下CMake使用介绍

    2018-07-03 16:44:33
    Linux下CMake使用介绍!
  • Linux 常用头文件

    2010-01-17 14:17:00
    :ANSI C。提供断言,assert(表达式):GCC。GTK,GNOME的基础库,提供很多有用的函数,如有数据结构...struct dirent,struct DIR,opendir(),closedir(),readdir(),readdir64()等:ANSI C。字符测试函数。isdigit(),isl
  • upload_tmp_dir

    2014-11-18 16:32:44
    php.ini 中的 upload_tmp_dir 的这个参数为上传文件的临时目录,需要 php 进程有读写权限。如何设置呢? 1. 查看 php 进程调用的 php.ini,一般调用 php 内置函数 phpinfo() 函数查看,方法很多: 新建...
  • linux 复制目录为 dir1 ,目标目录为 dir2。 怎样才能将 dir1 下所有文件复制到 dir2 下? 如果 dir2 目录不存在,则可以使用 cp -r dir1 dir2 如果 dir2 目录已存在,则需要使用 cp -r dir1/. dir2 --------------...
  • linux的启动涉及到一个解压与定位的过程,对于x86体系结构而言,系统被加载到0x100000的地方,那么swapper_pg_dir的值是什么呢?我们知道swapper_pg_dir是一个很重要的东西,它是所有进程内核空间的页表的模板,而且...
  • linux下ls和dir命令的作用相同,都是列出目录内容的命令。 区别如下: ls:会显示不同类型的文件的颜色 dir:不显示不同文件类型的文件颜色,所有文件都是一种颜色。 由此可见,虽然ls和dir命令效果一致,...
  • 因为所有在java.io中的...可以通过调用System.getProperty("user.dir") 来获得。 [java] view plain copy /**    获得当前类的完整路径。最后一句    */    package org.ou
  • 1、DIR 属性:数据类型; 头文件:#include 用法:定义一个指向文件目录的指针; 举例:DIR *dirpt =null; 2、dirent 属性:数据类型,结构体; 头文件:#include 用法:定义一个用于获取某文件夹目录内容,所使用...
  • Linux下ls与dir的区别

    2016-11-27 11:35:08
    dir is equivalent to ls -C -b; that is, by default files are listed in columns, sorted vertically, and special characters are represented by backslash escape sequences. 同时ls下,文件类型的目录颜色与...
  • 来源: 天大地大 海纳百川 linux字体配置文件fonts.dir分析 document.title="linux字体配置文件fonts.dir分析 - "+document.title现在很多人都喜欢打造自己的linux,并且她比以前更漂亮,其中设置字体是非常重要的...
  • 1. 打开 /etc/profile vi /etc/profile 2. 根据不同系统选择下面的环境变量 ...## Current running kernel on Fedora, CentOS 6 and Red Hat...KERN_DIR=/usr/src/kernels/`uname -r` ## Current running kernel
  • 功能说明:删除目录。   语法介绍:rmdir [-p][--help][--ignore-fail-on-non-empty][--verbose][--version][目录...]   补充说明:当有空目录要删除时,可使用rmdir指令。...-p或--parents 删除指定目录后,若...
  • linux下进行复制的命令为cp。 假设复制源目录 为 dir1 ,目标目录为dir2。怎样才能将dir1下所有文件复制到dir2下了 如果dir2目录不存在,则可以直接使用 cp -r dir1 dir2 即可。 如果dir2目录已存在,则需要使用 cp -...
  • 功能说明: 建立目录。   语法介绍: mkdir [-p][--help][--version][-m &lt;目录属性&gt;][目录名称]。...补充说明: mkdir 可建立目录并同时设置目录的权限。...-p 或 --parents 若所要建立目录的...
1 2 3 4 5 ... 20
收藏数 316,912
精华内容 126,764
关键字:

dir linux