find用法解析(macos环境BSD shell)

排除指定目录

参考:
https://stackoverflow.com/questions/4210042/how-to-exclude-a-directory-in-find-command

文件搜索

1
find . -path ./misc -prune -o -name '*.txt' -print

文件夹搜索

1
find . -type d \( -path dir1 -o -path dir2 -o -path dir3 \) -prune -o -print

文件搜索另一种写法

1
find . -name "*.png" -not -path "./a/*" -and -not -path "./b/*"

排除指定目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 获取指定目录下的文件
find . -type f \( -path "./a/*" -o -path "./b/*" -o -path "./c/*" \) -prune -name "*.png" -print

# 获取指定目录 & 子文件夹
find . -type d \( -path "./a/*" -o -path "./b/*" -o -path "./c/*" \) -prune -print

# 排除指定目录 写法1
find . -name "*.png" -not -path "./a/*" -and -not -path "./b/*"

# 排除指定目录 写法2
find . -path "./a/*" -o -path "./b/*" -o -type f -name "*.png" -print

# 连续写法
find . -path ./a -prune -or \
-path ./b -prune -or \
-name '*.png' -print

Alt text

待更新…