Linux基础之ls与文件名通配详解

ls应该是我们最熟悉的指令之一,通常进入命令行,少不了就要ls一下。

虽然它是一个很基本很常用的命令,不过它的功能也很丰富,熟练使用它可以更加辨别我们看我们想要看到的文件信息。

本文ls介绍基于CentOS7.2环境,后面的实验均在此环境下实现。

ls命令介绍

[[email protected] ~]# man ls
LS(1)                            User Commands                           LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List  information  about  the FILEs (the current directory by default).
       Sort entries alphabetically if none of -cftuvSUX nor --sort  is  speci‐
       fied.

       Mandatory  arguments  to  long  options are mandatory for short options
       too.

       -a, --all
              do not ignore entries starting with .
       -A, --almost-all
              do not list implied . and ..
       -d, --directory
              list directories themselves, not their contents
       -h, --human-readable
              with -l, print sizes in human readable format (e.g., 1K 234M 2G)
       -i, --inode
              print the index number of each file
       -l     use a long listing format
       -r, --reverse
              reverse order while sorting
       -R, --recursive
              list subdirectories recursively
       -S     sort by file size
       -t     sort by modification time, newest first
       -u     with  -lt:  sort by, and show, access time; with -l: show access
              time and sort by name; otherwise: sort by access time

以上的内容有所省略,本文只截取常用到的11个选项做详细说明。

-a 显示所有内容,包括以.开头的隐藏文件

[[email protected] ~]# ls -a /root
.                .bash_logout   .config  .esd_auth             .local       公共  文档
..               .bash_profile  .cshrc   .ICEauthority         .mozilla     模板  下载
anaconda-ks.cfg  .bashrc        CST      initial-setup-ks.cfg  .tcshrc      视频  音乐
.bash_history    .cache         .dbus    .lesshst              .Xauthority  图片  桌面

-A 显示所有内容,但不包括.和..文件,显示以.开头的隐藏文件

[[email protected] ~]# ls -A /root/
anaconda-ks.cfg  .bashrc  CST            initial-setup-ks.cfg  .tcshrc      视频  音乐
.bash_history    .cache   .dbus          .lesshst              .Xauthority  图片  桌面
.bash_logout     .config  .esd_auth      .local                公共         文档
.bash_profile    .cshrc   .ICEauthority  .mozilla              模板         下载

-d 显示目录本身但不显示目录下的内容

[[email protected] ~]# ls -d /root
/root
[[email protected] ~]# ls /root
anaconda-ks.cfg  CST  initial-setup-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面

-h 以人易识别的方式展示文件大小必须与-l一起使用

-l 文件长格式,也就是展示文件详细信息

[[email protected] ~]# ls /root
anaconda-ks.cfg  CST  initial-setup-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面
[[email protected] ~]# ls -l /root
总用量 8
-rw-------. 1 root root 1172 7月  20 00:38 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 7月  21 18:52 CST
-rw-------. 1 root root 1220 7月  19 16:46 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 7月  22 09:52 公共
drwxr-xr-x. 2 root root    6 7月  22 09:52 模板
drwxr-xr-x. 2 root root    6 7月  22 09:52 视频
drwxr-xr-x. 2 root root    6 7月  22 09:52 图片
drwxr-xr-x. 2 root root    6 7月  22 09:52 文档
drwxr-xr-x. 2 root root    6 7月  22 09:52 下载
drwxr-xr-x. 2 root root    6 7月  22 09:52 音乐
drwxr-xr-x. 2 root root    6 7月  22 09:52 桌面

上面显示了加-l与不加-l的却别,下面看看加-h的好处

[[email protected] ~]# ls -lh /root
总用量 8.0K
-rw-------. 1 root root 1.2K 7月  20 00:38 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 7月  21 18:52 CST
-rw-------. 1 root root 1.2K 7月  19 16:46 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 7月  22 09:52 公共
drwxr-xr-x. 2 root root    6 7月  22 09:52 模板
drwxr-xr-x. 2 root root    6 7月  22 09:52 视频
drwxr-xr-x. 2 root root    6 7月  22 09:52 图片
drwxr-xr-x. 2 root root    6 7月  22 09:52 文档
drwxr-xr-x. 2 root root    6 7月  22 09:52 下载
drwxr-xr-x. 2 root root    6 7月  22 09:52 音乐
drwxr-xr-x. 2 root root    6 7月  22 09:52 桌面

之前的字节都自动转换为kb格式,上面的更方便与我们对于文件大小有更直观的认识。

-i 显示文件inode号,关于inode我还有一些困惑,等了解足够清楚在后面会专门为inode写一篇文字。

[[email protected] ~]# ls -il /root
总用量 8
 72664101 -rw-------. 1 root root 1172 7月  20 00:38 anaconda-ks.cfg
 73207816 drwxr-xr-x. 2 root root    6 7月  21 18:52 CST
 72699695 -rw-------. 1 root root 1220 7月  19 16:46 initial-setup-ks.cfg
  2536844 drwxr-xr-x. 2 root root    6 7月  22 09:52 公共
101603105 drwxr-xr-x. 2 root root    6 7月  22 09:52 模板
  2536850 drwxr-xr-x. 2 root root    6 7月  22 09:52 视频
101603106 drwxr-xr-x. 2 root root    6 7月  22 09:52 图片
 35973547 drwxr-xr-x. 2 root root    6 7月  22 09:52 文档
 73207845 drwxr-xr-x. 2 root root    6 7月  22 09:52 下载
 73207846 drwxr-xr-x. 2 root root    6 7月  22 09:52 音乐
 34020951 drwxr-xr-x. 2 root root    6 7月  22 09:52 桌面

现在可以简单的认为inode相当于大公司的员工号,大公司根据员工号精确定位某个人,而它则是准确定位文件存储的位置。

-r 逆序显示文件

[[email protected] ~]# ls -rl /root 
总用量 8
drwxr-xr-x. 2 root root    6 7月  22 09:52 桌面
drwxr-xr-x. 2 root root    6 7月  22 09:52 音乐
drwxr-xr-x. 2 root root    6 7月  22 09:52 下载
drwxr-xr-x. 2 root root    6 7月  22 09:52 文档
drwxr-xr-x. 2 root root    6 7月  22 09:52 图片
drwxr-xr-x. 2 root root    6 7月  22 09:52 视频
drwxr-xr-x. 2 root root    6 7月  22 09:52 模板
drwxr-xr-x. 2 root root    6 7月  22 09:52 公共
-rw-------. 1 root root 1220 7月  19 16:46 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 7月  21 18:52 CST
-rw-------. 1 root root 1172 7月  20 00:38 anaconda-ks.cfg

-R 递归显示目录内容

[[email protected] ~]# ls -Rl /root 
/root:
总用量 8
-rw-------. 1 root root 1172 7月  20 00:38 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 7月  21 18:52 CST
-rw-------. 1 root root 1220 7月  19 16:46 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 7月  22 09:52 公共
drwxr-xr-x. 2 root root    6 7月  22 09:52 模板
drwxr-xr-x. 2 root root    6 7月  22 09:52 视频
drwxr-xr-x. 2 root root    6 7月  22 09:52 图片
drwxr-xr-x. 2 root root    6 7月  22 09:52 文档
drwxr-xr-x. 2 root root    6 7月  22 09:52 下载
drwxr-xr-x. 2 root root    6 7月  22 09:52 音乐
drwxr-xr-x. 2 root root    6 7月  22 09:52 桌面

/root/CST:
总用量 0

/root/公共:
总用量 0

/root/模板:
总用量 0

/root/视频:
总用量 0

/root/图片:
总用量 0

/root/文档:
总用量 0

/root/下载:
总用量 0

/root/音乐:
总用量 0

/root/桌面:
总用量 0

加上递归后会在显示主目录下的内容后在分别显示各个子目录下的所有内容,如果子目录下还有子目录也依次展开。其目的与-d相反

-S 按文件大小排序

[[email protected] ~]# ls -Sl /root 
总用量 8
-rw-------. 1 root root 1220 7月  19 16:46 initial-setup-ks.cfg
-rw-------. 1 root root 1172 7月  20 00:38 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 7月  21 18:52 CST
drwxr-xr-x. 2 root root    6 7月  22 09:52 公共
drwxr-xr-x. 2 root root    6 7月  22 09:52 模板
drwxr-xr-x. 2 root root    6 7月  22 09:52 视频
drwxr-xr-x. 2 root root    6 7月  22 09:52 图片
drwxr-xr-x. 2 root root    6 7月  22 09:52 文档
drwxr-xr-x. 2 root root    6 7月  22 09:52 下载
drwxr-xr-x. 2 root root    6 7月  22 09:52 音乐
drwxr-xr-x. 2 root root    6 7月  22 09:52 桌面

-t 以mtime时间前后排序,mtime越新越靠前

[[email protected] ~]# ls -tl /root
总用量 8
drwxr-xr-x. 2 root root    6 7月  22 09:52 公共
drwxr-xr-x. 2 root root    6 7月  22 09:52 模板
drwxr-xr-x. 2 root root    6 7月  22 09:52 视频
drwxr-xr-x. 2 root root    6 7月  22 09:52 图片
drwxr-xr-x. 2 root root    6 7月  22 09:52 文档
drwxr-xr-x. 2 root root    6 7月  22 09:52 下载
drwxr-xr-x. 2 root root    6 7月  22 09:52 音乐
drwxr-xr-x. 2 root root    6 7月  22 09:52 桌面
drwxr-xr-x. 2 root root    6 7月  21 18:52 CST
-rw-------. 1 root root 1172 7月  20 00:38 anaconda-ks.cfg
-rw-------. 1 root root 1220 7月  19 16:46 initial-setup-ks.cfg

-u 必须与-t合用,表示以atime时间前后排序,atime越新越靠前

[[email protected] ~]# ls -tul /root
总用量 8
drwxr-xr-x. 2 root root    6 7月  31 09:39 视频
drwxr-xr-x. 2 root root    6 7月  31 09:39 图片
drwxr-xr-x. 2 root root    6 7月  31 09:39 音乐
drwxr-xr-x. 2 root root    6 7月  31 09:39 下载
drwxr-xr-x. 2 root root    6 7月  31 09:39 文档
drwxr-xr-x. 2 root root    6 7月  31 09:39 公共
drwxr-xr-x. 2 root root    6 7月  31 09:39 CST
drwxr-xr-x. 2 root root    6 7月  31 09:39 桌面
drwxr-xr-x. 2 root root    6 7月  31 09:39 模板
-rw-------. 1 root root 1220 7月  19 16:46 initial-setup-ks.cfg
-rw-------. 1 root root 1172 7月  19 16:46 anaconda-ks.cfg

文件名通配

下面简要介绍下,文件名的通配符

*匹配零个或多个字符               ?匹配任何单个字符

~ 当前用户家目录                  ~username 用户家目录

~-前一个工作目录                  ~+ 当前工作目录

[0-9]匹配一个数字范围             [a-z]:大写和小写字母

[A-Z]:大写和小写字母

[]匹配列表中的任何的一个字符      [^]匹配列表中的所有字符以外的字符

[:digit:]:任意数字,相当于0-9    [:lower:]:任意小写字母

[:upper:]: 任意大写字母           [:alpha:]: 任意大小写字母

[:alnum:]:任意数字或字母         [:space:]:空格

[:punct:]:标点符号

下面通过一些实际例子,感受下文件名通配给我们带来的一些好处

1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录

[[email protected] ~]# ls /var/l*[0-9]*[[:lower:]]
ls: 无法访问/var/l*[0-9]*[[:lower:]]: 没有那个文件或目录

找不到,那我们自己创建一个符合条件的文件

[[email protected] ~]# touch /var/lq2e            
[[email protected] ~]# ls -l /var/l*[0-9]*[[:lower:]]
-rw-r--r--. 1 root root 0 7月  31 14:17 /var/lq2e

成功找到

2、显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录

[[email protected] ~]# ls /etc/[0-9]*[^0-9]
ls: 无法访问/etc/[0-9]*[^0-9]: 没有那个文件或目录
[[email protected] ~]# touch /etc/3q
[[email protected] ~]# ls /etc/[0-9]*[^0-9]
/etc/3q

初始的/etc/下没有符合条件的,通过创建一个符合条件的文件,成功检索并显示出来

3、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录

[[email protected] ~]# ls /etc/[^[:alpha:]][[:alpha:]]*
/etc/3q

成功显示

4、显示/etc目录下所有以m开头以非数字结尾的文件或目录

[[email protected] ~]# ls /etc/m*[^0-9]
/etc/machine-id  /etc/makedumpfile.conf.sample  /etc/motd         /etc/my.cnf
/etc/magic       /etc/man_db.conf               /etc/mtab
/etc/mail.rc     /etc/mke2fs.conf               /etc/mtools.conf

/etc/maven:

/etc/modprobe.d:
mlx4.conf

/etc/modules-load.d:

/etc/multipath:

/etc/my.cnf.d:
mysql-clients.cnf

5、显示/etc目录下,所有以.d结尾的文件或目录

[[email protected] ~]# ls -d /etc/*.d
/etc/bash_completion.d  /etc/ipsec.d         /etc/profile.d      /etc/rwtab.d
/etc/binfmt.d           /etc/ld.so.conf.d    /etc/rc0.d          /etc/sane.d
/etc/chkconfig.d        /etc/libibverbs.d    /etc/rc1.d          /etc/setuptool.d
/etc/cron.d             /etc/logrotate.d     /etc/rc2.d          /etc/statetab.d
/etc/depmod.d           /etc/modprobe.d      /etc/rc3.d          /etc/sudoers.d
/etc/dnsmasq.d          /etc/modules-load.d  /etc/rc4.d          /etc/sysctl.d
/etc/dracut.conf.d      /etc/my.cnf.d        /etc/rc5.d          /etc/tmpfiles.d
/etc/exports.d          /etc/oddjobd.conf.d  /etc/rc6.d          /etc/usb_modeswitch.d
/etc/gdbinit.d          /etc/pam.d           /etc/rc.d           /etc/xinetd.d
/etc/grub.d             /etc/popt.d          /etc/request-key.d  /etc/yum.repos.d
/etc/init.d             /etc/prelink.conf.d  /etc/rsyslog.d

这里我们得加上-d不显示目录内的内容,否则列出来的东西会非常多。因为我们想要的只是上述结果,所以不相关的内容还是不显示的好。

6、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录

[[email protected] ~]# ls -d /etc/[mnrp]*.conf
/etc/man_db.conf    /etc/nsswitch.conf  /etc/radvd.conf        /etc/rsyslog.conf
/etc/mke2fs.conf    /etc/numad.conf     /etc/request-key.conf
/etc/mtools.conf    /etc/pbm2ppa.conf   /etc/resolv.conf
/etc/nfsmount.conf  /etc/pnm2ppa.conf   /etc/rsyncd.conf

提示:我们在使用文件通配符查找自己想看到的内容是最好加上-d因为不加的话,你会看到很多非相关信息。

看到这相信大家对于ls及文件名通配内容已经有了初步的理解。

在大家看到这时不知有没有疑惑,在上面的6个例子里面,显示字母我用的是[:alpha:]而不是[a-z]、[A-Z]为什么呢,[a-z]、[A-Z]有什么区别呢?

下面对这个问题做下说明

我们先创建一个实验用的目录及4个文件

/test1目录

/test1/a文件      /test1/A文件      /test1/Z文件    /test1/z文件

[[email protected] ~]# ls /test1/           
a  A  z  Z

我们先分别ls /test1目录下的[:alpha:]、[a-z]、[A-Z]看看效果

[[email protected] ~]# ls /test1/[[:alpha:]]
/test1/a  /test1/A  /test1/z  /test1/Z
[[email protected] ~]# ls /test1/[a-z]
/test1/a  /test1/A  /test1/z
[[email protected] ~]# ls /test1/[A-Z]
/test1/A  /test1/z  /test1/Z

我们发现[:alpha:]包含所有大小写字母,[a-z]则不包含Z,[A-Z]不包含a。虽然[a-z][A-Z]这两个文件通配符不区分带小写,但是其所表示的范围还是有细微差别,所以在我们不了解其差别的情况下,稳妥起见还是选择使用[:alpha:]比较好。

时间: 2024-09-30 18:34:26

Linux基础之ls与文件名通配详解的相关文章

linux命令之ls命令及常用参数详解

1.  ls命令解释 ls英文全称为list,列表列出的意思.作用是列出目录中的内容 2.  命令格式 Ls [参数] [目录] 3.  命令常用参数 不带参数:默认列出目录下的所有文件名 -l:       列出目录下子目录和文件的详细信息(注,ll相当于ls –l) -a:       列出目录下所有东西,包括隐藏的 -t         按最后修改时间排序 -S         按文件大小排序.(大写的S) -r         排序时按倒序. 4.  命令实例 实例一:默认不带参数 其中

【linux基础】17、网络属性配置详解

一.配置主机接入TCP/IP网络 路由: 主机路由:host 网络路由:net 默认路由(网关):default DNS服务器: 主DNS服务器 备用DNS服务器 主机名: 配置IP: 网络设备如何表示: 内核识别设备:驱动 设备:别名 以太网设备:ethX, PPP网络:pppX 本地回环:lo ip配置在内核上,显示在网卡上 静态指定: IP/Netmask 动态配置: DHCP服务器  Dynamic Host Configuration Protocol 1)用户空间工具 立即通知内核生

bash的基本特性之文件名通配 及IO重定向,管道详解

本篇博文依然涉及到bash的基本特性 文件名通配,并讲解IO重定向以及管道的使用 管道配合tr命令的应用 bash的基础特性之一:文件名通配 globbing:文件名通配(整体文件名匹配,而非部分) 匹配模式:元字符 *:匹配任意长度的任意字符 pa*,*pa*,*pa,*p*a* ?:匹配任意单个字符 pa?,??pa,p?a,p?a? []:匹配指定范围内的任意单个字符 有几种特殊字符: [a-z],[A-Z],[0-9],[a-z0-9] [[:upper:]]:所有大写字母 [[:low

linux文件管理类命令,类型,用户的权限管理及bash shell的特性:命令别名,文件名通配

文件管理类命令 ls 查看 :cat tac more less head tail 复制:cp -r:递归 -i:提示,交互 -f:强制覆盖 -a :保留所有文件信息 -d:当源为链接文件时,复制链接本身,而非源文件 -p:保持原有属性 删除 : rm 删除非空目录 rm -rf 移动 : mv 创建 : touch 用来修改时间戳,创建空文件 -c:不创建新文件,只修改时间戳 -a:仅修改访问时间 -m:修改修改时间 -t:指定时间戳 先加-m再加-t后跟时间 元数据属性:stat 显示文件

正则表达式,文件名通配,扩展正则之间的一些异同

正则表达式是一个神器,但初学linux时候还有文件名通配这样的东东.今天就总结一下文件名通配,正则表达式,扩展正则表达式之间有什么异同.可能写的不全,求指教. 使用方面: 正则多用来匹配过滤文本内容. 文件名通配符则用来匹配文件名较多. 支持命令: 文件处理,查看cp find ls rm mv touch 等一系列的文件匹配查找命令.(和上面说的是一个意思) 正则表达式则用在文本内容处理的各种工具grep,awk,sed,vim末行模式等. 匹配功能上正则规矩多,自然能力更强大,所以就这的区别

文件名通配

命令别名 alias cls='clear' 在shell中定义的别名仅在当前shell生命周期中有效: 别名的有效范围:当前shell进程 unalias cls \CMD 使用命令本身 命令替换 $(pwd) , 反引号:`pwd` 把命令中某个子命令替换为其执行结果的过程 echo "The current directory is $(pwd)." touch ./file-$(date +%F-%H-%M-%S).txt bash支持的引号: ``:命令替换 "&q

linux下find和locate文件查找命令详解

文件查找命令: locate命令特点 1.非实时,模糊匹配,查找是根据全系统文件数据库进行的: 2.updatedb, 手动更新生成文件数据库,默认第天凌晨4点02分更新数据库 3.速度快 find命令特点: 1.实时 2.精确 3.支持众多查找标准 4.搜索指定目录中的所有文件完成查找,但速度慢: 格式: find 查找路径 匹配标准 查找到以后的处理运作 查找路径:默认为当前目录 匹配标准:默认为指定路径下的所有文件 处理运作:默认为显示 匹配标准: -name '文件名':对文件名作精确匹

linux初级学习笔记五:bash特性详解!(视频序号:03_2,3)

本节学习的命令:history,alias,ualias,\CMD 本节学习的技能:   bash的特性 光标跳转 查看命令历史 命令历史的使用技巧 给命令起别名 命令替换 文件名通配符 shell: 外壳 GUI:Gnome, KDE, Xfce CLI: sh, csh, ksh, bash, tcsh, zsh 进程:在每个进程看来,当前主机上只存在内核和当前进程 进程是程序的副本,进程是程序执行实例 用户工作环境: bash: #:管理员命令提示符 $:普通用户命令提示符 bash的特性

linux之cp/scp命令+scp命令详解

linux之cp/scp命令+scp命令详解 名称:cp 使用权限:所有使用者 使用方式: cp [options] source dest cp [options] source... directory 说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录. 把计 -a 尽可能将档案状态.权限等资料都照原状予以复制. -r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地. -f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制. 范例: 将档案 aa