我有一个包含很多子文件夹的大文件夹,我想在其中搜索包含三个单词的文件夹。请注意,文件夹名称需要包含所有三个单词,但单词的顺序无关紧要。
示例:我想查找包含单词APE,Banana和 的文件夹Tree。
find folder -name '*APE*Banana*Tree*'
Run Code Online (Sandbox Code Playgroud)
但是,这个命令会考虑单词的顺序,虽然这并不重要,我想以任何顺序找到包含这些单词的任何文件夹。
只需使用 3-name秒:
find folder -name '*APE*' -name '*Banana*' -name '*Tree*'
Run Code Online (Sandbox Code Playgroud)
请注意,就像您在-name模式中使用通配符一样,它可能会错过名称包含在用户语言环境中未形成有效字符的字符序列的文件。
与zsh:
set -o extendedglob # best in ~/.zshrc
print -rC1 -- **/(*Banana*~^*APE*~^*Tree*)(ND)
Run Code Online (Sandbox Code Playgroud)
与ksh93:
FIGNORE='@(.|..)'
set -o globstar
set -- ~(N)**/@(*Banana*&*APE*&*Tree*)
(($# == 0)) || printf '%s\n' "$@"
Run Code Online (Sandbox Code Playgroud)
与bash:
shopt -s globstar dotglob nullglob extglob
set -- **/!(!(*Banana*)|!(*APE*)|!(*Tree*))
(($# == 0)) || printf '%s\n' "$@"
Run Code Online (Sandbox Code Playgroud)
在哪里:
D, FIGNORE,dotglob确保也报告隐藏文件(就像这样find做)N, ~(N),nullglob使 glob 扩展为空而不是导致错误或在没有匹配时扩展到自身globstar制作ksh93/bash理解 zsh 的**/递归通配符。(x~^Y), @(X&Y),!(!(X)|!(Y))是各自 shell 中匹配匹配两种模式的文件的三种方法。| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |