Query Parser

Simple, semi-natural language query for filtering filing system objects.

The basic query is in the form of <field> <operator> “<meta data>”.

The quotes are required for all fields.

Queries can be bracketed.

Q1 & (Q2 | Q3) & ((Q4 & Q5) | Q6)

name beginsWith “Z” & (logSize < “1kb” | logSize > “1PB”) & ((created.hour = “12” & accessed.hour < “4”) | path contains “blob)

Fields

Describes the fields, the operators that work with the field and the metadata format.

Name

Filing system name of the object.

This is not the display name as shown in the Finder (and other applications).

And extensions are visible.

Operators

beginsWith, endsWith, contains, dnc*, <, ≤, <=, =, is, !=, ≠, isn’t, >=, ≥, >

* does not contain

Metadata

Almost all characters the filing system can accept.

The string must be convertible to UTF-8 format (usually not a issue).

To enter a as part of the string, use \” . e.g. “quote\”blah”.

Entry text : name

name contains “axe”

name is “job”

Path

Full path of the object.

Symbolic links and aliases are not resolved.

Operators

beginsWith, endsWith, contains, dnc, <, ≤, <=, =, is, !=, ≠, isn’t, >=, ≥, >

Metadata

Almost all characters the filing system can accept.

The string must be convertible to UTF-8 format (usually not a issue).

To enter a as part of the string, use \” . e.g. “quote\”blah”.

Entry text : path

path contains “axe”

path is “job”

Type

What filing system type the object is.

Operators

=, is, !=, ≠

Metadata

One of the following: fifo, char, dir, directory, folder, block, symlink, symbolic, link, sym link, sock, socket, whiteout.

Entry text : type

type is “block”

Dates

There are five different date fields : created, content modifier, attribute modified, backuped & last accessed.

Each field can append a sub-component for more flexible filtering

  • date : day, month, year
  • year
  • month : 1-12 or month name
  • day : day of month (1-31) or week day name.
  • time : hour, minute, second
  • hour : 0-23
  • minute : 0-59
  •  second : 0-59
  • Operators

    <, ≤, <=, =, is, !=, ≠, isn’t, >=, ≥, >

    Metadata

    For all

  • Y : year
  • M : month
  • D : day
  • H : hour
  • N : minute
  • S : second
  • The following uses the creation date for informational purposes.
    The information also applies to content modification, attribute modification, accessed and backuped.
    Entry text is what you put into the query.
    Replace 'created' with 'cntModified', 'attrModified', 'backuped' or 'accessed' when reading the entry text format for the other date fields.

    Created

  • “YYYY/MM/DD.HH:NN:SS”, “DD/MM/YYYY.HH:NN:SS”
  • M, D, H, N, S can be one or two digits. Y must be four digits.
  • Entry text : created

    Creation Date

  • “YYYY/MM/DD”, “DD/MM/YYYY”
  • M, D can be one or two digits. Y must be four digits.
  • Entry text : created.date

    Creation Year

  • “YY”, “YYYY”
  • For YY, the value is added to 2000
  • Entry text : created.year

    Creation Month

  • “mM”, “mMM”
  • The leading ‘m’ is required. Range is 1-12.
  • "jan", "january", "feb", "feburary", "mar", "march", "apr", "april", "may", "jun", "june", "jul", "july", "aug", "august", "sep", "september", "oct", "october", "nov", "november", "dec", "december"
  • Entry text : created.month

    Creation Day

  • “dD”, “dDD”
  • The leading ‘d’ is required. Range is 1-31.
  • "sun", "sunday", "mon", "monday", "tue", "tuesday", "wed", "wednesday", "thu", "thursday", "fri", "friday", "sat", "saturday"
  • Entry text : created.day

    Creation Time

  • “HH:MM:SS”
  • H, M, S can be one or two digits.
  • H range is 0-23. M range is 0-59. S range is 0-59.
  • Entry text : created.time

    Creation Hour

  • “HH:”, “HH”, “midnight”, “midday”
  • H can be one or two digits.
  • Entry text : created.hour

    Creation Minute

  • “:NN:”, “NN”
  • N can be one or two digits.
  • Entry text : created.minute

    Creation Second

  • “:SS”, “SS”
  • S can be one or two digits.
  • Entry text : created.second

    Owner ID

    Owner ID of object.

    Operators

    <, ≤, <=, =, is, !=, ≠, isn’t, >=, ≥, >

    Metadata

    XX”, “XXsfx”

  • X is any integer >= 0.
  • sfx is one of the following suffixes
  • kb, mb, gb, tb, pb. Multiplies of 1000.
  • kib, mib, gib, tib, pib. Multiples of 1024.
  • byte
  • Entry text : ownerID

    Group ID

    Group ID of object.

    See OwnerID above.

    Entry text : groupID

    File ID

    FS ID of object

    See OwnerID above.

    Entry text : fileID

    Parent ID

    Parent directory ID of object

    See OwnerID above.

    Entry text : parentID

    Logical Size

    Logical size of object. Includes resource fork.

    See OwnerID above.

    Entry text : logSize

    Physical Size

    Physical size of object. Includes resource fork.

    See OwnerID above.

    Entry text : phySize

    Valence

    Number of items in directory.

    Does not include ‘.’ & ‘..’.

    Does include hidden objects.

    See OwnerID above.

    Immediate Logical Size

    Total logical size of all child components. Does not burrow into sub-directories.

    See OwnerID above.

    Entry text : immedLogSize

    Immediate Physical Size

    Total physical size of all child components. Does not burrow into sub-directories.

    See OwnerID above.

    Entry text : immedPhySize

    Data

    Actual data content of a file.

    This is not yet implemented.

    A query with this field will only search files, never any other filing system object.

    Operators

    These are all the operators

  • =, is
  • !=, isn’t, ≠
  • < , ≤ , <= , >= , >, ≥
  • contains
  • dnc (does not contain)
  • beginsWith
  • endsWith

  • beginsWith endsWith contains dnc < <= ≤ = is != ≠ isn’t >= ≥ >
    Name
    Path
    Type
    Dates
    Numeric Fields
    Data