如何使用find按名称排除目录?
我的系统上有很多目录,结构如下:
\-----data \------- 001abc \------- 002abc \------- 003abc \------- 004abc \------- 005abc \ ....
当我想找到某个目录时,我只需输入find . -iname "002abc*"
find . -iname "002abc*"
但如何查找不包含某些名称匹配的目录?
MySQL中的这样的东西select * from folder where filename != '0021bc'
用!
在find
命令中否定(反转)后面的选项。 在你的情况下:
find . ! -iname "002abc*"
并且可选地,仅匹配文件夹:
find . ! -iname "002abc*" -type d
将列出除名称匹配模式002abc*
之外的所有文件夹。
的!
有时在shell脚本中会有问题, 正如Flimm指出的那样 , -not
参数是一个非常有用的同义词。
find -name 0021bc -prune -o -print
你可以找到“所有”文件夹,然后用grep -v
选择你不想要的文件夹(或egrep)
find . -iname "abc*" | grep -v 002
如果要选择多个名称,可以使用顺序grep -v或一个egrep语句。
find . -iname "abc*" | grep -v 002 | grep -v 003
要么
find . -iname "abc*" | egrep -v "002|003"
你必须把它调到你想要的东西,我很乐意迭代。 如果您阅读了查找的手册页,您将找到许多标记来排序文件和文件夹。