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 [/$]
也就是在文件名称后加一个符号,只保留以
/
结尾的。也就是文件夹