Linux/UNIX仅列出目录或目录名称
时间:2020-01-09 10:41:45 来源:igfitidea点击:
如何在Linux和UNIX之类的操作系统上仅列出目录名称?
如何仅在Linux中列出目录?
Linux或类似UNIX的系统使用ls命令列出文件和目录。
但是,ls没有选择仅列出目录。
您可以使用ls命令和grep命令的组合仅列出目录名称。
您也可以使用find命令。
在本快速教程中,您将学习如何仅列出Linux或UNIX中的目录。
显示或列出Unix中的所有目录
执行以下命令:
$ ls -l | grep `^d' $ ls -l | egrep `^d'
或者最好尝试以下ls命令仅列出当前目录的目录:
$ ls -d */
Linux使用ls命令仅列出目录
运行以下ls命令:
ls -d */
在Linux或类似Unix的系统中使用ls命令仅列出目录
Linux仅显示或列出文件
执行以下命令以仅列出Linux或Unix中的文件:
$ ls -l | egrep -v '^d' $ ls -l | egrep -v '^d'
grep命令用于搜索输入。
它将通过匹配第一个字符d来过滤目录名称。
要反转效果,即仅显示文件,您需要传递-v选项。
它会反转匹配感,以选择不匹配的行。
创建bash shell别名以节省时间
您可以如下创建两个别名,以仅列出目录和文件。
alias lf="ls -l | egrep -v '^d'" alias ldir='ls -d */' ##alias ldir="ls -l | egrep '^d'"
在bash shell启动文件中的两个别名上方:
$ cd $ vi .bash_profile
追加两行:
alias lf="ls -l | egrep -v '^d'" alias ldir='ls -d */' #alias ldir="ls -l | egrep '^d'"
保存并关闭vim中的文件。
现在只需执行lf即可列出文件。
再次运行ldir仅列出目录:
$ cd /etc $ lf
输出示例:
-rw-r--r-- 1 root root 2149 2006-09-04 23:25 adduser.conf -rw-r--r-- 1 root root 44 2006-09-29 05:11 adjtime -rw-r--r-- 1 root root 197 2006-09-04 23:48 aliases -rw------- 1 root root 144 2002-01-18 13:43 at.deny -rw-r--r-- 1 root root 162 2006-09-22 23:24 aumixrc -rw-r--r-- 1 root root 28 2006-09-22 23:24 aumixrc1 .... .. ....
仅列出目录名称:
$ cd /etc $ ldir
输出示例:
drwxr-xr-x 4 root root 4096 2006-09-22 16:41 alsa drwxr-xr-x 2 root root 4096 2006-09-20 20:59 alternatives drwxr-xr-x 6 root root 4096 2006-09-22 16:41 apm drwxr-xr-x 3 root root 4096 2006-09-07 02:51 apt drwxr-xr-x 2 root root 4096 2006-09-08 01:46 bash_completion.d .... ..... .
使用find命令列出Linux上的文件或目录
find命令可用于如下列出/nas中的所有目录,执行:
find /nas -type d find /nas -type d -ls find . -type d -ls
输出示例:
1070785 8 drwxrwxrwt 8 root root 4096 Jul 5 07:12 . 1070797 8 drwx------ 2 root root 4096 Jul 4 07:22 ./orbit-root 1070843 8 drwxr-xr-x 2 root root 4096 Jun 16 18:55 ./w 1070789 8 drwxr-xr-x 10 root root 4096 Jun 17 14:54 ./b 1071340 8 drwxr-xr-x 2 root root 4096 Jun 16 18:55 ./b/init.d 1071581 8 drwxr-xr-x 3 root root 4096 Jun 16 18:55 ./b/bind 1071584 8 drwxr-xr-x 2 root root 4096 Jun 16 18:55 ./b/bind/bak 1071617 8 drwxr-xr-x 2 root root 4096 Jun 16 18:55 ./b/fw 1071628 8 drwxr-xr-x 8 root root 4096 Jun 16 18:55 ./b/scripts
传递-maxdepth 0以将列表限制到起点,即仅当前工作目录:
find /path/to/dir -maxdepth 1 -type d find . -maxdepth 1 -type d find . -maxdepth 1 -type d -ls
在Linux中使用find命令仅列出目录
查找并删除bak目录
假设您要查找所有扩展名为.bak的目录并将其删除,请在当前目录中运行以下find命令:
find . -type d -iname ".bak" -delete
验证一下:
find . -type d -iname ".bak" -ls