<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title># rm-rf.es &#187; comando find</title>
	<atom:link href="http://rm-rf.es/sobre/comando-find/feed/" rel="self" type="application/rss+xml" />
	<link>http://rm-rf.es</link>
	<description>Administración de sistemas, Unix, Linux, FreeBSD, Windows, hosting, dominios, servidores...</description>
	<lastBuildDate>Sat, 28 Jan 2012 19:36:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>El comando Unix Find</title>
		<link>http://rm-rf.es/el-comando-unix-find/</link>
		<comments>http://rm-rf.es/el-comando-unix-find/#comments</comments>
		<pubDate>Sun, 03 Aug 2008 17:05:56 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Comandos]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[comando find]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[unix find]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=170</guid>
		<description><![CDATA[El programa find es un comando común en sistemas Unix que se utiliza para encontrar archivos en un determinado directorio a partir de diversas reglas de búsqueda, tales como nombre exacto de archivo, fecha de creación, tamaño, permisos, etc, llegando a ser muy flexible y una de las herramientas más útiles en la administración de [...]]]></description>
			<content:encoded><![CDATA[<p>El programa find es un comando común en sistemas Unix que se utiliza para <strong>encontrar archivos en un determinado directorio a partir de diversas reglas de búsqueda</strong>, tales como nombre exacto de archivo, fecha de creación, tamaño, permisos, etc, llegando a ser muy flexible y una de las herramientas más útiles en la administración de sistemas cuando se sabe utilizar.</p>
<p style="text-align: right;"><a href="http://es.wikipedia.org/wiki/Find">Wikipedia</a></p>
<p>La sintaxis de find más básica es la siguiente:</p>
<pre>find [ruta-de-acceso...] [expresión]</pre>
<p>La ruta de acceso por defecto es el directorio actual; la expresión por defecto es -print, pudiendo ser operadores, opciones, pruebas y acciones:</p>
<pre>operadores (prioridad decreciente; se supone -and si no hay otros):
      ( EXPR ) ! EXPR -not EXPR EXPR1 -a EXPR2 EXPR1 -and EXPR2
      EXPR1 -o EXPR2 EXPR1 -or EXPR2 EXPR1 , EXPR2

opciones posicionales (siempre verdaderas): -daystart -follow -regextype

opciones normales (siempre verdaderas, especificadas antes de otras expresiones):
      -depth --help -maxdepth NIVELES -mindepth NIVELES -mount -noleaf
      --version -xdev -ignore_readdir_race -noignore_readdir_race

prueba (N puede ser +N or -N o N): -amin N -anewer ARCHIVO -ctime N -empty -false
      -cnewer ARCHIVO -ctime N -empty -false -fstype TIPO -gid N -group NOMBRE
      -ilname PATRON -iname PATRON -inum N -iwholename PATRON -iregex PATRON
      -links N -lname PATRON -mmin N -mtime N -name PATRON -newer ARCHIVO
      -nouser -nogroup -path EXPR-REG -perm [+-]MODO -regex EXPR-REG
      -wholename EXPR-REG -size N[bcwkMG] -true -type [bcdpflsD] -uid N
      -used N -user NOMBRE -xtype [bcdpfls]

acciones: -delete -print0 -printf FORMATO -fprintf ARCHIVO FORMATO -print
      -fprint0 ARCHIVO -fprint ARCHIVO -ls -fls ARCHIVO -prune -quit
      -exec COMANDO ; -exec COMANDO {} + -ok COMANDO ;
      -execdir COMANDO ; -execdir COMANDO {} + -okdir COMANDO ;</pre>
<p>Veamos unos ejemplos prácticos para llegar a comprender la potencia de este comando:</p>
<p>Queremos encontrar todos los ficheros con extension .conf dentro de /etc:</p>
<pre>find /etc -name '*.conf'</pre>
<p>Lo cierto es que este tipo de búsquedas pueden resultar demasiado grandes, y listar muchísmos resultados, para ello podemos añadir criterios y acotar los resultados. Si por ejemplo quisieramos ver los logs ubicados dentro de /usr/local cuyo tamaño supere los 100Mb:</p>
<pre>find /usr/local/ -name '*log' -a -size +100M</pre>
<p>Y si quiseramos saber que ficheros de el directorio /var/log/ cuya extensión sea .bak no han sido modificados en 15 días:</p>
<pre>find /var/log -name '*.bak'  -mtime +15</pre>
<p>Si no quisieramos esos ficheros, solamente tenemos que borrarlos:</p>
<pre>find /var/log -name '*.bak'  -mtime +15 -exec rm -f {} \;</pre>
<p>La verdad es que la mayor parte de expresiones de find son bastante intuitivas, <em>-mtime, -uid, -name, -size</em>, etc. Pero es realmente interesante comentar <strong>&#8220;-exec&#8221;</strong>, pues nos va a ser de extrema utilidad para construir comandos potentes con find.</p>
<p>-exec nos va  a permitir aplicar ciertas acciones a los ficheros encontrados con find, como en el ejemplo anterior, en el cual eliminabamos los ficheros que coincidian con ciertos criterios. Para ello tenemos que comprender el uso de  <strong>&#8216;{}&#8217;</strong> y  <strong>\;</strong></p>
<p><strong>&#8216;{}&#8217;</strong> será cada uno de los ficheros encontrados, y <strong>\;</strong> indicará donde termina la ejecución del exec.</p>
<p>Como podéis ver las posibilidades de este comando (como las de la mayoría de comandos unix) son infinitas, solamente hay que comprenderlo y saber en que momento puede sernos de utilidad. Realmente podemos ejecutar operaciones tediosas con una sola línea de código. Recordad que en las páginas man teneis muchísima más información.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/truco-linux-eliminar-directorios-vacios-usando-find/" title="Truco Linux: Eliminar directorios vacíos usando Find">Truco Linux: Eliminar directorios vacíos usando Find</a></li><li><a href="http://rm-rf.es/renombrar-ficheros-de-forma-masiva-usando-find-y-sed/" title="Renombrar ficheros de forma masiva usando find y sed">Renombrar ficheros de forma masiva usando find y sed</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/el-comando-unix-find/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

