<?xml version="1.0" encoding="UTF-8"?>
<!--
! CCPL HEADER START
!
! This work is licensed under the Creative Commons
! Attribution-NonCommercial-NoDerivs 3.0 Unported License.
! To view a copy of this license, visit
! http://creativecommons.org/licenses/by-nc-nd/3.0/
! or send a letter to Creative Commons, 444 Castro Street,
! Suite 900, Mountain View, California, 94041, USA.
!
! You can also obtain a copy of the license at
! trunk/opendj3/legal-notices/CC-BY-NC-ND.txt.
! See the License for the specific language governing permissions
! and limitations under the License.
!
! If applicable, add the following below this CCPL HEADER, with the fields
! enclosed by brackets "[]" replaced with your own identifying information:
! Portions Copyright [yyyy] [name of copyright owner]
!
! CCPL HEADER END
!
! Copyright 2011-2012 ForgeRock AS
! Portions Copyright 2013 Jens Elkner
!
-->
<refentry xml:id="ldifsearch-1" xmlns="http://docbook.org/ns/docbook"
version="5.0" xml:lang="en"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://docbook.org/ns/docbook http://docbook.org/xml/5.0/xsd/docbook.xsd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="common.xml" xpointer='xpointer(//info[@name="info"])'/>
<refmeta>
<refentrytitle><application>ldifsearch</application></refentrytitle>
<xi:include href="common.xml" xpointer='xpointer(//manvolnum[@name="v1m"])'/>
</refmeta>
<refnamediv>
<refname><application>ldifsearch</application></refname>
<refpurpose>search LDIF with LDAP filters</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>ldifsearch</command>
<arg>-O</arg>
<arg>-t</arg>
<arg>-b <replaceable class="parameter">baseDN</replaceable></arg>
<arg>-l <replaceable class="parameter">searchFile</replaceable></arg>
<arg>-f <replaceable class="parameter">filterFile</replaceable></arg>
<arg>-o <replaceable class="parameter">outfile</replaceable></arg>
<arg>-s <replaceable class="parameter">searchScope</replaceable></arg>
<arg>-L <replaceable class="parameter">seconds</replaceable></arg>
<arg>-z <replaceable class="parameter">entries</replaceable></arg>
<xi:include href="common.xml"
xpointer='xpointer(//para[@name="s-general"]/*)'/>
<sbr/><sbr/>
<arg choice="opt">filter</arg>
<arg choice="opt" rep="repeat">attribute</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsection>
<title>Description</title>
<para>
This utility can be used to perform search operations against data in an LDIF
file.
</para>
<variablelist>
<varlistentry>
<term>filter</term>
<listitem>
<para>
The filter argument is a string representation of an LDAP search filter as in
(cn=Babs Jensen), (&amp;(objectClass=Person)(|(sn=Jensen)(cn=Babs J*))), or
(cn:caseExactMatch:=Fred Flintstone).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>attribute</term>
<listitem>
<para>
The optional attribute list specifies the attributes to return in the entries
found by the search. In addition to identifying attributes by name such as cn
sn mail and so forth, you can use the following notations, too.
</para>
<variablelist>
<varlistentry>
<term>*</term>
<listitem>
<para>
Return all user attributes such as cn, sn, and mail.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>+</term>
<listitem>
<para>
Return all operational attributes such as etag and pwdPolicySubentry.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>@<replaceable class="parameter">objectclass</replaceable></term>
<listitem>
<para>
Return all attributes of the specified object class, where <replaceable
>objectclass</replaceable> is one of the object classes on the entries returned
by the search.
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
</variablelist>
</refsection>
<refsection>
<title>Options</title>
<para>
The following options are supported.
</para>
<variablelist>
<varlistentry>
<term><option>-b, --baseDN</option> <replaceable
class="parameter">baseDN</replaceable></term>
<listitem>
<para>
Search base DN. Multiple files may be specified by providing the option multiple
times.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-l, --ldifFile </option> <replaceable
class="parameter">file</replaceable></term>
<listitem>
<para>
LDIF file containing the data to search. Multiple files may be specified by
providing the option multiple times. If no files are provided, the data will
be read from standard input.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-f, --filterFile</option> <replaceable
class="parameter">file</replaceable></term>
<listitem>
<para>
File containing a list of search filter strings. If this is not provided, then
the filter must be provided on the command line after all configuration options.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-o, --outputFile</option> <replaceable
class="parameter">file</replaceable></term>
<listitem>
<para>
Write search results to <replaceable>file</replaceable> instead of stdout.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-O, --overwriteExisting</option></term>
<listitem>
<para>
Any existing output file should be overwritten rather than appending to it.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-s, --searchScope</option> <replaceable
class="parameter">scope</replaceable></term>
<listitem>
<para>
Search scope: 'base', 'one', 'sub', or 'subordinate' (Default: sub).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-L, --timeLimit</option> <replaceable
class="parameter">seconds</replaceable></term>
<listitem>
<para>
Maximum length of time in seconds to allow for the search (Default: 0).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-z, --sizeLimit</option> <replaceable
class="parameter">entries</replaceable></term>
<listitem>
<para>
Maximum number of matching entries to return from the search (Default: 0).
</para>
</listitem>
</varlistentry>
</variablelist>
<refsection>
<title>Utility Input/Output Options</title>
<variablelist>
<varlistentry>
<term><option>-t, --dontWrap</option></term>
<listitem>
<para>
Do not wrap long lines.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsection>
<refsection>
<title>General Options</title>
<variablelist>
<xi:include href="common.xml"
xpointer='xpointer(//para[@name="l-general"]/*)'/>
</variablelist>
</refsection>
</refsection>
<refsection>
<title>Examples</title>
<informalexample>
<para>
The following example demonstrates use of the command.
</para>
<literallayout><prompt
>$ </prompt><command>ldifsearch -b dc=example,dc=com -l /tmp/Example.ldif uid=bjensen</command></literallayout>
<screen>
dn: uid=bjensen,ou=People,dc=example,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
uid: bjensen
userpassword: hifalutin
facsimiletelephonenumber: +1 408 555 1992
givenname: Barbara
cn: Barbara Jensen
cn: Babs Jensen
telephonenumber: +1 408 555 1862
sn: Jensen
roomnumber: 0209
homeDirectory: /home/bjensen
mail: bjensen@example.com
l: Cupertino
ou: Product Development
ou: People
uidNumber: 1076
gidNumber: 1000
</screen>
</informalexample>
<informalexample>
<para>
You can also use @<replaceable>objectclass</replaceable> notation in the
attribute list to return the attributes of a particular object class. The
following example shows how to return attributes of the
<code>posixAccount</code> object class.
</para>
<literallayout><prompt
>$ </prompt><command>ldifsearch -b dc=example,dc=com -l /tmp/Example.ldif \
"(uid=bjensen)" @posixaccount</command></literallayout>
<screen>
dn: uid=bjensen,ou=People,dc=example,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
uid: bjensen
userpassword: hifalutin
cn: Barbara Jensen
cn: Babs Jensen
homeDirectory: /home/bjensen
uidNumber: 1076
gidNumber: 1000
</screen>
</informalexample>
</refsection>
<xi:include href="common.xml" xpointer='xpointer(//refsection[@name="env"])'/>
<xi:include href="common.xml" xpointer='xpointer(//refsection[@name="exit-0-gt0"])'/>
<xi:include href="common.xml" xpointer='xpointer(//refsection[@name="seeAlso"])'/>
</refentry>