bash查找不是指定类型的文件

时间:2014-01-01 08:34:22

标签: bash

/home/ggicci/mydir
 |+ dir_1
 |+ dir_2
 |- file_1.txt
 |- link_1
 |- link_2

我想查找所有目录和文件,但不包括链接。我尝试使用find . -maxdepth 1 -type !l \( ! -iname ".*" \) -exec echo {} \;,但find: Arguments to -type should contain only one letter。我是否必须运行find . -type d ...find . -type f ...等分开的命令?如果mydir包含其他类型的文件怎么办?

2 个答案:

答案 0 :(得分:5)

在测试之前,!-not来反转测试(在-type之前的情况下);所以,你可以写:

find . -maxdepth 1 ! -type l \( ! -iname ".*" \) -exec echo {} \;

或者,清理一下:

find   .   -maxdepth 1   ! -type l   ! -iname '.*'

答案 1 :(得分:0)

不使用find

file * | grep -v ': .*link' | cut -d: -f1