Loading

linux下只显示文件或是文件夹的方法

在处理文件相关操作的时,我们可能会用到只显示文件或者是只显示文件夹的功能,可以使用如下命令来实现:

只显示文件

ls -l | grep ^[^d] | awk '{print $8}'

1.其中 ls -l 就是将文件详细列出
2.grep ^[^d]中,^[^d] 是一个正则表达式,表示字符串含有一个不是d的字符, ^d表示以d开头,^[^d]表示不以d开头。
3.awk是强大的文本分析工具,其中print $8 表示第八列,列之间以空格区分,具体在那一列可以自己调整调整。

上述命令中还是会存在的一个问题,就是文件名中存在空格就不好显示出来,可以用另一个办法

ls -1 -F | grep -v [/$]

1.-1 作用是单列输出
2.-F 作用是在文件名称后面加一个符号,目录会加上/,可执行文件会加上*
3.grep -v [/$],[/$]表达式匹配的是以'/'结尾的字符串,而-v选项则是排除这些匹配的字符串

这个就可以很好地实现只显示文件名的功能
例如:

[root@RV1126_RV1109:~]# ls -1 -F /root/face_terminal/mqttca/ | grep -v [$/]
1 - 副本 (2).txt
1 - 副本 (3).txt
1 - 副本 (4).txt
1 - 副本 (5).txt
1 - 副本 (6).txt
1 - 副本.txt
1.txt

只显示文件夹

1.最简单的办法

ls -d */
例如:

[root@RV1126_RV1109:~]# ls -d /root/face_terminal/mqttca/*/
/root/face_terminal/mqttca/test/

2.结合grep命令

ls -l | grep ^d

这样会列出一些具体信息,如果只列出文件名则可以借用awk命令
ls -l | grep ^d | awk '{print $8}'

例:

[root@RV1126_RV1109:~]# ls -l /root/face_terminal/mqttca/ | grep ^d
drwxr-xr-x 2 root root 4096 Feb 14 14:34 test
[root@RV1126_RV1109:~]# ls -l /root/face_terminal/mqttca/ | grep ^d | awk '{print $8}'
14:34
[root@RV1126_RV1109:~]# ls -l /root/face_terminal/mqttca/ | grep ^d | awk '{print $9}'
test

3.目录中有空格(第二种方法改进)

ls -F | grep [/$]

也就是在文件名称后加一个符号,只保留以/结尾的。也就是文件夹

posted @ 2023-02-16 15:33  henryLyg  阅读(1588)  评论(0编辑  收藏  举报