<?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; find</title>
	<atom:link href="http://rm-rf.es/sobre/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>Truco Linux: Eliminar directorios vacíos usando Find</title>
		<link>http://rm-rf.es/truco-linux-eliminar-directorios-vacios-usando-find/</link>
		<comments>http://rm-rf.es/truco-linux-eliminar-directorios-vacios-usando-find/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 19:42:00 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Comandos]]></category>
		<category><![CDATA[borrar]]></category>
		<category><![CDATA[consola]]></category>
		<category><![CDATA[directorios]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[xargs]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=334</guid>
		<description><![CDATA[Con la siguiente línea de comandos, lograremos eliminar todos los directorios que estén vacíos a partir de el directorio en el que nos encontremos (.): find . -type d -empty -print0 &#124; xargs -0 rmdir La explicación es sencilla, usamos find para buscar, le indicamos que queremos buscar directorios (-type d), que estén vacíos (-empty), [...]]]></description>
			<content:encoded><![CDATA[<p>Con la siguiente línea de comandos, lograremos eliminar todos los directorios que estén vacíos a partir de el directorio en el que nos encontremos (.):</p>
<pre>find . -type d -empty -print0 | xargs -0 rmdir</pre>
<p>La explicación es sencilla, usamos find para buscar, le indicamos que queremos buscar directorios (-type d), que estén vacíos (-empty), y los mostramos por pantalla (print), posteriormente, al resultado de este comando le pasamos la orden de borrado de directorio usando Xargs.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/multiples-terminales-en-una-ventana-con-terminator/" title="Múltiples terminales en una ventana con Terminator">Múltiples terminales en una ventana con Terminator</a></li><li><a href="http://rm-rf.es/comando-chage-tiempo-de-vida-de-claves-y-usuarios-en-gnulinux/" title="Comando chage: tiempo de vida de claves y usuarios en GNU/Linux">Comando chage: tiempo de vida de claves y usuarios en GNU/Linux</a></li><li><a href="http://rm-rf.es/gestion-de-lvm-en-linux-logical-volume-manager/" title="Gestión de LVM en Linux (Logical Volume Manager)">Gestión de LVM en Linux (Logical Volume Manager)</a></li><li><a href="http://rm-rf.es/xargs-problemas-con-los-argumentos/" title="xargs: problemas con los argumentos {}">xargs: problemas con los argumentos {}</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/truco-linux-eliminar-directorios-vacios-usando-find/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Renombrar ficheros de forma masiva usando find y sed</title>
		<link>http://rm-rf.es/renombrar-ficheros-de-forma-masiva-usando-find-y-sed/</link>
		<comments>http://rm-rf.es/renombrar-ficheros-de-forma-masiva-usando-find-y-sed/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 14:42:31 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Comandos]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[renombrar ficheros]]></category>
		<category><![CDATA[sed]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=176</guid>
		<description><![CDATA[En [shell-fu]$ he encontrado esta línea de comandos que puede ser de utilidad, renombra todos los ficheros de una determinada extensión a otra usando los comandos find y sed: find -name "*.php3" &#124; sed 's/\(.*\).php3$/mv "&#38;" "\1.php"/' &#124; sh En este caso los que tienen extensión php3 a php. Podréis comprobar que lo primero que [...]]]></description>
			<content:encoded><![CDATA[<p>En <a href="http://www.shell-fu.org/">[shell-fu]$</a> he encontrado esta línea de comandos que puede ser de utilidad, renombra todos los ficheros de una determinada extensión a otra usando los comandos find y sed:</p>
<pre>find -name "*.php3" | sed 's/\(.*\).php3$/mv "&amp;" "\1.php"/' | sh</pre>
<p>En este caso los que tienen extensión php3 a php. Podréis comprobar que lo primero que hace es buscar todos los ficheros cuya extensión sea php3, después con sed crea la sintaxis del comando para finalmente ejecutarlo con &#8220;sh&#8221;.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/volver-a-concatenar-lineas-de-un-ldif-con-sed/" title="Volver a concatenar líneas de un LDIF con sed">Volver a concatenar líneas de un LDIF con sed</a></li><li><a href="http://rm-rf.es/utilizar-variables-dentro-de-sed/" title="Utilizar variables dentro de sed">Utilizar variables dentro de sed</a></li><li><a href="http://rm-rf.es/usar-sed-sobre-multiples-lineas/" title="Usar SED sobre múltiples líneas">Usar SED sobre múltiples líneas</a></li><li><a href="http://rm-rf.es/truco-shell-unix-quitar-lineas-en-blanco-de-un-fichero-con-grep/" title="Truco shell Unix: quitar líneas en blanco de un fichero con grep">Truco shell Unix: quitar líneas en blanco de un fichero con grep</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/renombrar-ficheros-de-forma-masiva-usando-find-y-sed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>

