精华内容
下载资源
问答
  • locate

    2020-02-17 17:21:49
    locate locate命令用于查找符合条件的文件,该命令依赖于事先建立好的数库,在保存文档和目录名称的数据库内,查找符合条件的文件或目录,这个数据库中含有本地的所有文件信息,系统会创建这个数据库,并且每天自动...

    locate
    locate命令用于查找符合条件的文件,该命令依赖于事先建立好的数库,在保存文档和目录名称的数据库内,查找符合条件的文件或目录,这个数据库中含有本地的所有文件信息,系统会创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate命令之前,先使用updatedb命令,手动更新数据库。

    特性

    1. 查找速度快
    2. 模糊查找
    3. 非实时查找

    常用参数

    -b:只匹配路径中的基名(基名就相当于绝对路径中最后一个子目录或文件的名称)
    -c:统计有多少符合的文件
    
    展开全文
  • Locate

    2011-06-14 08:23:00
    TDataSet控件以及它的继承控件,例如TSimpleDataSet/TClientDataSet等都可以使用Locate方法在结果数据集中查寻数据。程序首先必须使用SQL命令从后端数据库中取得数据并且形成结果数据集,然后才使用Locate方法查寻...
    TDataSet控件以及它的继承控件,例如TSimpleDataSet/TClientDataSet等都可以使用Locate方法在结果数据集中查寻数据。程序首先必须使用SQL命令从后端数据库中取得数据并且形成结果数据集,然后才使用Locate方法查寻数据。
    
    当使用Locate方法查寻数据时,开发人员可以使用任何的字段条件来查寻,而无须理会这个字段是不是索引字段。当然,当开发人员使用索引字段来查寻数据时,Locate会直接使用索引来帮助查寻,因此速度会非常快速。如果开发人员使用非索引字段查寻数据,那么Locate也将使用目前它知道最好的方式来查寻数据。
    
    此外,Locate方法不只能够查寻一个单一的字段,它同时还能以数个字段的条件来查寻数据。开发人员可以组合数个字段的查寻条件在结果数据集中查寻数据。
    
    由于Locate能够查寻各种不同数据类型的字段,因此Locate方法在设定查寻条件时是以Variant类型的变量来储存查寻数值的。当开发人员要使用多个字段来查寻数据时必须建立一个Variant数组来储存查寻数值。
    
    此外,Locate方法在查寻数据时也能够使用模糊条件标准来寻找特定的数据,例如开发人员可以要求Locate在查寻数据时不分大小写,或是以部分字符串来查寻数据,这样就为开发人员提供了非常大的弹性空间。
    
    下面就是Locate的方法原型:
    
    function Locate(const KeyFields: String; const KeyValues: Variant; 
    
    Options: TLocateOptions): Boolean;
    
    Locate方法接受三个参数。第一个参数KeyFields是开发人员要查寻的字段名称。如果开发人员要查寻单一字段,那么只需要直接传入此字段名称。如果要以多个字段条件来查寻,那么便需传入所有的字段名称,并且以分号分隔每一个字段名称。
    
    第二个参数KeyValues是指开发人员欲查寻的条件数值。它的类型是Variant,因为Variant几乎可以代表任何的类型,因此开发人员可以查寻整数、小数、字符串,或是布尔值的条件。同样,如果开发人员只查寻一个条件数值,那么就可以直接在这个参数位置传入。如果是以多个字段条件来查寻,那么开发人员必须建立一个Variant数组,然后在这个数组中的每一个元素中指定条件数值,再传递Variant数组到这个参数中。至于Variant数组则可以使用VarArrayOf方法,或是使用VarArrayCreate方法来建立,在稍后的范例中会有程序代码说明。
    
    Locate方法的最后一个参数TLocateOptions则是让开发人员在查寻字符串字段时,指定以什么标准来查寻数据。开发人员可以指明不分大小写来查寻字符串数据,或是以部分字符串数值来查寻数据。下面就是TLocateOptions的类型定义:
    
    type
    
      TLocateOption = (loCaseInsensitive, loPartialKey);
    
      TLocateOptions = setof TLocateOption;
    
    在使用Locate时,如果使用loCaseInsensitive就代表不分大小写查寻数据;如果使用loPartialKey就代表要以部分字符串来查寻数据。
    
    Locate方法的回传数值是布尔值,它代表Locate方法是否成功找到了要查寻的数据。如果找到,就回传True,否则就回传False。当Locate方法成功地查寻到数据之后,它就会移动目前的记录位置到这笔数据上,否则就会停留在Locate开始查寻之前的记录位置上。
    
    请注意Locate方法查寻数据的结果是一笔数据,因此,如果你想查寻符合条件的一群数据,那么你可以使用稍后将介绍的过滤器(Filter)功能。
    
    现在,让我们使用数个范例来说明如何使用Locate方法。下面的范例程序代码即是以一个字段来查寻数据,它是以数据表的NAME字段来查寻拥有“李维”数值的这笔数据,由于最后一个参数是空集合,因此,这代表NAME字段必须拥有一模一样的“李维”这个数值才算查寻成功。
    
      aSQLClientDataSet.Locate('NAME', '李维' , []);
    
    下面的程序代码则以City和District两个字段来查寻数据,查寻的条件是City字段拥有“台北”数值,而District字段拥有“大安区”数值的数据。
    
      aSQLClientDataSet.Locate('City;District', VarArrayOf(['台北,大安区']),[]);
    
    下面的程序代码和第一个范例非常相像,只是这个程序代码查寻的是第一笔在NAME字段以“李”数值开头的数据。
    
      aSQLClientDataSet.Locate('NAME', '李', [loPartialKey]);
    
    最后一个范例则是查寻ID字段中任何以“A12”数值开头的第一笔,而且是不分A大小写的数据。
    
      aSQLClientDataSet.Locate('ID', 'A12', [loCaseInsensitive ,loPartialKey]);
    
    现在就让我们使用Locate方法在范例应用程序中查寻数据。
    
    单字段查寻
    
    首先让我们以单一的字段来展示如何查寻数据,稍后再说明如何以多个字段查寻数据。现在请双击图4-3中的【Locate】按钮,并且在它的事件处理函数中撰写如下的程序代码:
    
      dmSearchData.sqlcdsTest.Locate('SPECIES_NO', edtID.Text, [loCaseInsensitive, loPartialKey]);
    
    这行程序代码使用数据模块中的TSimpleDataSet来查寻SPECIES_NO字段中包含用户在edtID这个TEdit控件中输入的数值。现在请执行这个范例应用程序,并且在主窗体右边的TEdit控件中输入数值来查寻数据。例如图4-4便是范例应用程序执行的画面。当我们在TEdit控件中输入90100并且点击【Locate】按钮之后,TSimpleDataSet便会立刻找到并且把目前的记录位置移动到这笔数据之上。
    
    
    
    图4-4  Locate找到90100这笔数据
    
    使用Locate方法查寻单一字段的数据是非常简单的,现在再让我们看看如何使用多个字段来查寻数据。
    
    多字段查寻
    
    请在Delphi中建立一个应用程序,并与上面的范例一样建立一个数据模块,并且传入TSQLConnection、TSimpleDataSet,连接到相同的范例数据库CHINESEDEMO.GDB。接着在主窗体中放入如图4-5所示的控件。在主窗体中我们使用了一个TComboBox,在这个TComboBox中将会填入范例数据表所有的字段名称,以便让用户可以自由选择要使用来查寻的字段。
    
    另外,主窗体使用了一个TCheckListBox,它主要是用来储存所有用户输入的查寻条件。当用户在查寻字段中选择了一个字段,然后在查寻数值中输入了欲查寻的数值时,那么就可以点击主窗体中往下箭头的按钮把这个查寻条件加入到TCheckListBox中。当用户输入完所有查寻的条件之后,就可以点击主窗体中的【Locate】按钮以开始查寻数据。此时范例应用程序就会分析TCheckListBox中所有的查寻字段和查寻数值,再调用Locate以多个字段条件来查寻数据。
    
    
    
    图4-5  范例应用程序的主窗体
    
    例如图4-6就是这个范例应用程序执行的画面。首先,当范例应用程序执行后,用户便可以在TComboBox中选择欲查寻的字段,接着就可以在查寻数值控件中输入欲查寻的数值,接着点击往下箭头的按钮,加入查寻条件到TCheckListBox中,或是点击往上箭头的按钮,清除某一个查寻条件。
    
    在TCheckListBox中的查寻条件是以:
    
    查寻字段名称/查寻字段数值
    
    为格式储存的,当用户点击了【Locate】按钮之后就会从TCheckListBox中一一地取出查寻条件,并且分析出查寻字段名称以及查寻字段数值,再放入到Locate方法的第一个以及第二个参数中。
    
    
    
    图4-6  执行范例应用程序的画面
    
    最后当输入完所有的查寻条件之后,用户就可以点击主窗体中的【Locate】按钮来查寻数据了。例如图4-7便是我们查寻TOPOTYPE字段包含“China”的数值,以及SPECIES_NAME字段以O字母为开头的数值。在点击了【Locate】按钮之后,范例应用程序调用Locate方法并且以多个字段为查寻条件,果然立即找到了这笔数据。
    
    
    
    图4-7  以数个字段条件来查寻数据
    
    这个范例应用程序是如何运作的呢?这个范例的应用程序执行了下列的工作:
    
    1. 程序启动时在TComboBox中填入范例数据表所有的字段名称;
    
    2. 点击往下箭头按钮把查寻字段和查寻数值加入到TCheckListBox中,以及点击往上箭头清除查寻条件;
    
    3. 点击【Locate】按钮时从TCheckListBox中取出查寻条件,并且填入Locate方法的参数中,查寻数据。
    
    现在就让我们实现以上的工作。首先在范例应用程序启动时,存取数据模块中TSimpleDataSet的Field对象的FieldName特性值以取得字段名称,再填入TComboBox中:
    
    procedure TfrmMain.FormActivate(Sender: TObject);
    
    var
    
      iField : Integer;
    
    begin
    
      for iField := 0 to dmSearchData.sqlcdsTest.FieldCount - 1 do
    
      begin
    
        cbFields.Items.Add(dmSearchData.sqlcdsTest.Fields[iField].FieldName)
    
      end;
    
      cbFields.ItemIndex := 0;
    
    end;
    
    当点击往下箭头按钮时,取出TComboBox中选择的字段名称,以及查寻数值控件中输入的查寻数值,再检查TCheckListBox中是否已经存在了这个查寻字段,如果没有,就将字段名称加字段数值加入到TCheckListBox中。
    
    此外,当点击往上箭头按钮时,我们就删除TCheckListBox中目前被选择的查寻条件。
    
    procedure TfrmMain.sbtnAddClick(Sender: TObject);
    
    begin
    
      if (not AlreadyInCond(cbFields.Text)) then
    
      begin
    
        clbConditions.Items.Add(cbFields.Text + '/' + lblSearchValue.Text);
    
        clbConditions.Checked[clbConditions.Count - 1] := True;
    
      end;
    
    end;
    
     
    
    procedure TfrmMain.sbtnDeleteClick(Sender: TObject);
    
    begin
    
      try
    
        clbConditions.Items.Delete(clbConditions.ItemIndex);
    
      except
    
        on Exception do;
    
      end;
    
    end;
    
    最后,当用户点击了主窗体中的【Locate】按钮,范例应用程序就先检查用户是否输入任何的查寻条件。如果有,就调用GetSerchFields从TCheckListBox中取出所有的查寻字段名称,然后调用GetSearchValues取得所有用户输入的查寻数值,最后调用Locate方法来查寻数据。
    
    其中的GetSearchValues会先调用VarArrayCreate方法以建立一个Variant数组,再于这个Variant数组中一一输入用户的查寻数值。
    
    procedure TfrmMain.btnLocateClick(Sender: TObject);
    
    var
    
      sFields : String;
    
    begin
    
      lStart := GetTickCount;
    
      if (CanSearch) then
    
      begin
    
        sFields := GetSerchFields;
    
        dmSearchData.sqlcdsTest.Locate(sFields, GetSearchValues, 
          [loCaseInsensitive, loPartialKey]);
    
      end;
    
      lEnd := GetTickCount;
    
     
    
      Self.Caption := FloatToStr((lEnd - lStart) /1000.0);
    
    end;
    
     
    
    function TfrmMain.GetSearchValues : Variant;
    
    var
    
      iCount : Integer;
    
      sCond : String;
    
    begin
    
      Result := VarArrayCreate([0, Self.clbConditions.Items.Count - 1], 
        varVariant);;
    
      for iCount := 0 to Self.clbConditions.Items.Count - 1 do
    
      begin
    
        sCond := Self.clbConditions.Items[iCount];
    
        Result[iCount] := GetSearchValue(sCond);
    
      end;
    
    end;
    
     
    
    function TfrmMain.GetSearchFields: String;
    
    var
    
      iCount : Integer;
    
      sCond : String;
    
    begin
    
      Result := '';
    
      for iCount := 0 to Self.clbConditions.Items.Count - 1 do
    
      begin
    
        sCond := Self.clbConditions.Items[iCount];
    
        Result := Result + GetSearchField(sCond) + ';';
    
      end;
    
      Delete(Result, Length(Result), 1);
    
    end;
    
     
    
    function TfrmMain.CanSearch: Boolean;
    
    begin
    
      Result := Self.clbConditions.Items.Count > 0;
    
    end;
    
     
    
    function TfrmMain.GetSearchField(const sCond: String): String;
    
    var
    
      iPos : Integer;
    
    begin
    
      iPos := Pos('/', sCond);
    
      Result := Copy(sCond, 1, iPos - 1);
    
    end;
    
     
    
    function TfrmMain.GetSearchValue(const sCond: String): String;
    
    var
    
      iPos : Integer;
    
    begin
    
      iPos := Pos('/', sCond);
    
      Result := Copy(sCond, iPos + 1, Length(sCOnd) - iPos);
    
    end;
    
     
    
    function TfrmMain.AlreadyInCond(const sField: String): Boolean;
    
    var
    
      iCount : Integer;
    
      sCond : String;
    
      iPos : Integer;
    
    begin
    
      Result := False;
    
     
    
      for iCount := 0 to clbConditions.Items.Count - 1 do
    
      begin
    
        sCond := clbConditions.Items[iCount];
    
        iPos := Pos(sField, sCond);
    
        if (iPos <> 0) then
    
        begin
    
          Result := True;
    
          Break;
    
        end;
    
      end;
    
    end;
    
    上面的范例展示了如何使用Locate方法以多个字段条件来查寻数据。由于Locate方法的第二个参数是Variant类型,因此,我们几乎可以查寻任何类型的字段。Locate方法非常适合在所有数据已经存在于结果数据集中的应用,但是对拥有大量记录的数据表却不见得适合,在稍后的小节中,本章会继续讨论如何使用Locate在大量的数据中查寻数据。
    展开全文
  • Locate说明书

    2018-09-18 14:32:18
    Locate会议系统说明书。Locate会议系统说明书。Locate会议系统说明书。
  • locate命令

    2020-07-30 20:23:12
    locate命令用于查找符合条件的文件,其会去保存文件和目录名称的数据库内,查找符合指定条件的文件或目录,locate命令预设的数据库位于/var/lib/mlocate/mlocate.db,locate与find不同,find是去硬盘找,而locate只...

    locate命令

    locate命令用于查找符合条件的文件,其会去保存文件和目录名称的数据库内,查找符合指定条件的文件或目录,locate命令预设的数据库位于/var/lib/mlocate/mlocate.dblocatefind不同,find是去硬盘找,而locate只在数据库中查找,这个数据库中含有本地所有文件信息,Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件,可以主动执行updatedb命令以更新数据库。

    语法

    locate [OPTION] [PATTERN]
    

    参数

    • -b, --basename: 仅将基本名称与指定的模式匹配。
    • -c, --count: 在标准输出上不输出文件名,而只输出匹配条目的数量。
    • -d, --database <DBPATH>: 用指定的数据库替换默认数据库,如果指定了多个--database选项,则结果路径是单独路径的串联,此外空数据库文件名将替换为默认数据库。
    • -e, --existing: 仅打印引用定位时存在的文件的条目。
    • -L, --follow: 在检查文件是否存在时,遵循尾随的符号链接,这会使将导致断开的符号链接从输出中省略,这是默认行为。
    • -h, --help: 在线帮助。
    • -i, --ignore-case: 匹配模式时忽略大小写区别。
    • -l, --limit, -n <LIMIT>: 找到LIMIT个条目后成功退出,如果指定了--count选项,则结果计数也将限制为LIMIT
    • -m, --mmap: 出于BSDGNU兼容性而被忽略。
    • -P, --nofollow, -H: 在检查文件是否存在时,不跟随尾随的符号链接,这会使断开的符号链接像其他文件一样被报告。
    • -0, --null: 使用ASCII NUL字符分隔输出上的条目,而不是将每个条目写在单独的行上,此选项旨在与GNU xargs--null选项互操作。
    • -S, --statistics: 将每个有关读取数据库的统计信息写入标准输出,而不是搜索文件并成功退出。
    • -q, --quiet: 不输出任何有关读取和处理数据库时遇到的错误的消息。
    • -r, --regexp <REGEXP>: 搜索基本的正则表达式,如果使用此选项,则不允许使用模式匹配,但可以多次指定此选项。
    • --regex: 将所有PATTERN解释为扩展的正则表达式。
    • -s, --stdio: 出于BSDGNU兼容性而被忽略。
    • -V, --version: 输出版本信息。
    • -w, --wholename: 将整个路径名与指定的模式匹配,这是默认行为。

    示例

    查找file.txt文件。

    locate file.txt
    

    输出匹配file.txt文件名的数量。

    locate -c file.txt
    

    匹配以make结尾的文件。

    locate -r make$
    

    每日一题

    https://github.com/WindrunnerMax/EveryDay
    

    参考

    https://man.linuxde.net/locate_slocate
    https://www.runoob.com/linux/linux-comm-locate.html
    https://www.tutorialspoint.com/unix_commands/locate.htm
    
    展开全文
  • mac locate

    万次阅读 2018-01-28 13:01:15
    mac locate报错 usage: locate [-0Scims] [-l limit] [-d database] pattern ... default database: `/var/db/locate.database' or $LOCATE_PATH 解决方法 sudo /usr/libexec/locate.updatedb 来源张永光的...

    mac locate报错

    usage: locate [-0Scims] [-l limit] [-d database] pattern ...
    
    default database: `/var/db/locate.database' or $LOCATE_PATH
    

    解决方法

    sudo /usr/libexec/locate.updatedb
    

    来源张永光的博客

    展开全文
  • centos locate 命令安装

    2017-09-23 08:50:53
    locate
  • locate安装

    2019-07-25 13:17:36
    locate: can not stat () `/var/lib/mlocate/mlocate.db’: 没有那个文件或目录 更新库:updatedb locate命令和find -name功能差不多,但是比find搜索要快。因为find命令查找的是具体目录文件,而locate搜索的是一个...
  • 安装locate

    2017-11-12 02:18:00
    安装locate安装包 我在linux下,不是很熟悉使用find的命令,所以比较习惯用locate命令。 不过这次iredos由于精简的原因,没有安装locate包, 我尝试yum install locate,结果没有这个包。 yum list | grep locate...
  • linux locate

    2018-12-06 14:56:00
    一 .命令格式: locate [-d ][--help][--version][范本样式...] ...locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜...
  • linux locate

    2018-12-06 14:56:00
    一 .命令格式: locate [-d ][--help][--version][范本样式...] ...locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜...
  • locate使用

    2019-10-10 09:13:08
    在linux下经常需要查找位置文件的路径,之前我经常用的是find。...与find不同的是,locate命令是提前为系统上的文件建立索引。扫描索引文件达到查找文件路径的效果。优缺点就很明显可,查找速度快,但是需要...
  • Linux locate命令 Linux locate命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。 一般情况我们只需要输入 locate your_file_name 即可查找指定文件。 语法 ...
  • 用法:locate [OPTION]… [PATTERN]… locate 选项 命令选项 [root@fp-22 ~]# locate --help -A, --all # 只打印与所有模式匹配的条目 -b, --basename # 只匹配路径名的基本名称 -c, --count # 统计匹配到的个数 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,905
精华内容 10,362
关键字:

locate