Linux【2】-管理文件-1-5-ls

今天心里空落落的,来复习一下常用的几个文件与目录管理命令:ls、rm、cp、mv的参数吧。

一、ls

[root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
[root@www ~]# ls [--color={never,auto,always}] 目录名称
[root@www ~]# ls [--full-time] 目录名称

选项与参数:
 -a :全部的档案,连同隐藏档( 开头为 . 的档案) 一起列出来(常用)
 -A :全部的档案,连同隐藏档,但不包括 . 与 .. 这两个目录
 -d :仅列出目录本身,而不是列出目录内的档案数据(常用)
 -f :直接列出结果,而不进行排序 (ls 预设会以档名排序!)
 -F :根据档案、目录等信息,给予附加数据结构,例如:
 *:代表可执行文件; /:代表目录; =:代表 socket 档案; |:代表 FIFO 档案;
 -h :将档案容量以人类较易读的方式(例如 GB, KB 等等)列出来;
 -i :列出 inode 号码,inode 的意义下一章将会介绍;
 -l :长数据串行出,包含档案的属性与权限等等数据;(常用)
 -n :列出 UID 与 GID 而非使用者与群组的名称(UID与GID会在账号管理提到!)
 -r :将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小;
 -R :连同子目录内容一起列出来,等于该目录下的所有档案都会显示出来;
 -S :以档案容量大小排序,而不是用档名排序;
 -t :依时间排序,而不是用档名。
 --color=never :不要依据档案特性给予颜色显示;<strong>默认的有执行权限的为绿色字体,文件夹为绿色背景</strong>
 --color=always :显示颜色
 --color=auto :让系统自行依据设定来判断是否给予颜色
 --full-time :以完整时间模式 (包含年、月、日、时、分) 输出
 --time={atime,ctime} :输出 access 时间或改变权限属性时间(ctime)
 而非内容变更时间(modification time)
 只有下达 ls 时,默认显示的只有:非隐藏档的档名、以档名进行排序及文件名代表的颜色显示如此而已

通过使用 -a,你会看到以 . 为开头的几个文件,以及目录文件 (.)、(..)、.gconf 等等,这些都是隐藏的目录和文件。其中,目录文件名以蓝色显示,一般文件以白色显示。

注意,Linux 系统中,隐藏文件不是为了把文件藏起来不让其他用户找到,而是为了告诉用户这些文件都是重要的系统文件,如非必要,不要乱动!所以,不论是 Linux 还是 Windows 都可以非常简单地査看隐藏文件,只是在 Windows 中绝大多数的病毒和木马都会把自己变成隐藏文件,给用户带来了错觉,以为隐藏文件是为了不让用户发现。

不仅如此,这里的 ls 命令还使用了 -l 选项,因此才显示出了文件的详细信息,此选项显示的这 7 列的含义分别是:

  1. 第一列:规定了不同的用户对文件所拥有的权限,具体权限的含义将在后续章节中讲解。
  2. 第二列:引用计数,文件的引用计数代表该文件的硬链接个数,而目录的引用计数代表该目录有多少个一级子目录。(个数包含了隐藏的文件)
  3. 第三列:所有者,也就是这个文件属于哪个用户。默认所有者是文件的建立用户。
  4. 第四列:所属组,默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组。
  5. 第五列:大小,默认单位是字节。
  6. 第六列:文件修改时间,文件状态修改时间或文件数据修改时间都会更改这个时间,注意这个时间不是文件的创建时间。
  7. 第七列:文件名或目录名。

如果我们想查看某个目录的详细信息,例如:

[root@localhost ~]# ls -l /root/
总用量44
-rw-------.1 root root 1207 1 月 14 18:18 anaconda-ks.cfg
-rw-r-r--.1 root root 24772 1 月 14 18:17 install.log
-rw-r-r--.1 root root 7690 1 月 14 18:17 install.log.syslog

这个命令会显示目录下的内容,而不会显示这个目录本身的详细信息。如果想显示目录本身的信息,就必须加入 “-d” 选项。

[root@localhost ~]# ls -ld /root/
dr-xr-x---.2 root root 4096 1 月 20 12:30 /root/

“ls-l” 显示的文件大小是字节,但是我们更加习惯的是千字节用 KB 显示,兆字节用 MB 显示,而 “-h” 选项就是按照人们习惯的单位显示文件大小的,例如:

[root@localhost ~]# ls -lh
总用量44K
-rw-------.1 root root 1.2K 1 月 14 18:18 anaconda-ks.cfg
-rw-r-r--.1 root root 25K 1 月 14 18:17 install.log
-rw-r-r--.1 root root 7.6K 1 月 14 18:17 install.log.syslog

ls中看到的时间

Linux下的三个时间:

  1. Access Time:简写为atime,表示文件的访问时间。当文件内容被访问时,更新这个时间
  2. Modify Time:简写为mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。
  3. Change Time:简写为ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks数。

这是个挺有趣的现象,举例来说,我们来看一看你自己的 /etc/man.config 这个文件的时间吧!

[root@www ~]# ls -l /etc/man.config
-rw-r--r-- 1 root root 4617 Jan  6  2007 /etc/man.config

[root@www ~]# ls -l --time=atime /etc/man.config
-rw-r--r-- 1 root root 4617 Sep 25 17:54 /etc/man.config

[root@www ~]# ls -l --time=ctime /etc/man.config
-rw-r--r-- 1 root root 4617 Sep  4 18:03 /etc/man.config

看到了吗?在默认的情况下,ls 显示出来的是该文件的mtime ,也就是这个文件的内容上次被更动的时间。

1.统计文件夹下文件的个数,包括子文件夹里的  

ls -lR|grep "^-"|wc -l

2.按文件大小排序

ls -Sl  # 按照由大到小排序

ls -Slr  # 按照由小到大排序

再者,如果想要输入是按照“便于人类阅读的方式”,那么就再加一个-h,表示"–human-readable" 这样单位就是k或者M ,比较容易看清楚结果

参考资料

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn