oriolrius.cat

Des del 2000 compartiendo sobre…

Tag: find

Fent un tar sense els directoris .svn

Reading time: < 1 minute

Després de molts anys d’experiències en Unix/Linux encara de vegades m’ofusco en tonteries com la que comento al títol, què trist,eh!? bé doncs perquè no ús passi com a mi que he trigat quasi 10min per inspirar-me i fer algo tan senzill com això:

tar cvfz fitxer.tar.gz $(find directori/ -type f | grep -v .svn)

Suposo que és obvi entendre que volem fer una còpia en un fitxer comprimit del codi que hi ha a directori sense els fitxers i directoris .svn del control de versions (subversion).

equivalent de la comanda “grep” en windows: “find”

Reading time: < 1 minute

Si te hubiera conocido antes… m’he passat mitja vida usant el grep en linux i fins avui no he descobert que en windows existeix el find que serveix pel mateix. Per fi ja puc fer:

# netstat -an | grep ESTABLISHED

C:\>netstat -an | find "ESTABLISHED"

mini-script per llistar tots els fitxers menys els ‘n’ més nous

Reading time: < 1 minute

La idea: volem tenir un directori amb els n fitxers més nous, la resta s’han d’anar borrant… l’script d’allò més senzill: (suposem n=10)

rm -f `ls -t | sed -e '1,10d'`

Si la llista de fitxers a borrar és massa llarga també podriem fer:

for F in `ls -t | sed -e '1,10d'`; do rm -f $F; done

Exemple d’aplicació: per guardar al repositori de correu com a backup els útlims n emails rebuts i anar borrant la resta.

Un petit, ràpid i bon manual de sed el podeu trobar a Selectorweb.com. (local )

Buscar fitxers amb el contingut duplicat en linux…

Reading time: 1 – 2 minutes

Sovint costa trobar eines o petits scripts que fassin coses aparenment tan estupides com la comentada. De fet per windows he trobat alguns programes que tenen bona pinta tot i que no els he provat encara. Però per linux m’ha costat una mica més fins que he trobat el fdupes (local). Esta programat en C i realment és molt senzill d’usar i força potent.

També he trobat un petit script en bash que fa una busqueda força rudimentaria però útil en alguns casos:

OUTF=rem-duplicates.sh;
echo "#! /bin/sh" > $OUTF;
find "$@" -type f -print0 |
  xargs -0 -n1 md5sum |
    sort --key=1,32 | uniq -w 32 -d --all-repeated=separate |
    sed -r 's/^[0-9a-f]*( )*//;s/([^a-zA-Z0-9./_-])/\\\1/g;s/(.+)/#rm \1/' >> $OUTF;
chmod a+x $OUTF; ls -l $OUTF

La pàgina on he trobat aquest script és Unix shell script for removing duplicate files.

bash tip: buscant fitxers més nous que…

Reading time: < 1 minute

Petit apunt de sintaxis del find. Com buscar els fitxers creats a partir d’una data.

Primer creem un fitxer amb la data de referència a partir de la que volem fer la busqueda:

touch -t 05231500 fitxer_dataref

Ara busquem els fitxers més nous que el fitxer fitxer_dataref:

find . -newer fitxer_dataref -type f -print

Aquesta tonteria va molt bé envendir-la en petits scripts per borar els fitxers esmentats, per exemple:

for F in `find . -newer fitxer_dataref -print`; do rm $F; done