Linux – Arbol de directorios y tamaños de archivos

“tree” usando “ls”:

ls -R /etc | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/'

Los archivos/directorios de mayor tamaño dentro de /var:

du -a /var | sort -nr | head -n20
for i in G M K; do du -ah /var | grep [0-9]$i | sort -k1 -nr; done | head -n20

Sólo los archivos de mayor tamaño dentro de /var:

find /var -type f -ls | sort -k7 -nr | awk '{print $7 " " $11}' | head -n20

Sólo los archivos de iguales o mayores a cierto tamaño dentro de /var:

find /var -type f -size +1024k -exec ls -lh {} \; | awk '{ print $5 ": " $9 }' | sort -k1 -hr | head -n20
find /var -type f -size +5M -exec ls -lh {} \; | awk '{ print $5 ": " $9 }' | sort -k1 -hr | head -n20

Encontrar los 25 archivos mayores a 1024kB que existen dentro de /var/log:

find /var/log -type f -size +1024k -exec ls -lS {} \+ | head -n25

Directorios iguales o mayores a 1GB:

du -h / | grep ^[0-9.]*G
find / -type d -size +1G

Direcotorios iguales o mayores a 10GB:

du -h / | grep ^[1-9][0-9][0-9.]*G | sort -rn

Direcotorios iguales omayores a 200GB:

du -h / | grep ^[2-9][0-9][0-9][0-9.]*G

Listar los 10 archivos de mayor tamaño (sin directorios), en el directorio actual, de manera recursiva:

find . -printf '%s %p\n' | sort -nr | head -n20

Para restringir el resultado al directorio actual:

find . -maxdepth 1 -printf '%s %p\n'|sort -nr| head -n20

Para listar los 20 archivos-directorio mayores en tamaño:

du -a . | sort -nr | head -n20

Encontrar los 25 directorios de mayor tamaño, de manera recursiva, en el directorio actual:

du -sm */ | sort -rn | head -n25

Encontrar los 25 directorios de mayor tamaño, de menera recursiva, dentro del directorio /var/log/:

du -sm /var/log/* | sort -k1rn | head -n25

El tamaño total de /var/log:

du -sm /var/log
du -sh /var/log

Por favor consulte:

Linux – Encontrando lo recién modificado

Ordenados en orden inverso al tiempo de actualización (es decir, los archivos recientes de primero):

find /etc -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r | more
find /etc -type f -exec stat --format '%Y :%y %n' {} \; | sort -nr | cut -d: -f2- | head -n50

Uso de -print0 para soportar espacios y también “linefeeds” en los nombres de archivo:

find /etc -type f -print0 | xargs -0 stat --format '%Y :%y %n' | sort -nr | cut -d: -f2- | head -n50

Utilizando stat estando en el directorio actual:

stat --printf="%y %n\n" $(ls -tr $(find * -type f)) | sort -k1 -k2 -r | head -n50

Para buscar archivos dentro de /etc y todos sus sub-directorios, los archivos que hayan sido modificado en los últimos 45 minutos:

find /etc -type f -mmin -45

Para buscar archivos dentro de /etc y todos sus sub-directorios, los archivos que hayan sido modificado en los últimos 7 días:

find /etc -type f -mtime -7
for f in `find /etc -type f -mtime -7`; do ls -l $f; done

Por favor consulte:

Convirtiendo los CR/LF en DOS en LF/Unix recursivamente

Lo ideal es tener instalado el comando: dos2unix

^M = <ctrl+v><ctrl+m>

perl -pi -e 's/<ctrl+v><ctrl+m>$//' `find . -type f \( -iname '*.php' -o -iname '*.css' -o -iname '*.js' -o -iname '*.htm*' \) -exec egrep -l '<ctrl+v><ctrl+m>$' {} \;`

Según el análisis de correr:

find . -type f -not \( -iname '*.pdf' -o -iname '*.mov' -o -iname '*.avi' -o -iname '*.mpe' -o -iname '*.mpeg' -o -iname '*.mpg' -o -iname '*.flv' -o -iname '*.swf' -o -iname '*.ico' -o -iname '*.gif' -o -name '*.png' -o -name '*.jpg' -o -name '*.jpe' -o -name '*.jpeg' \)

Con “find” se pueden excluir cierto tipo de extensiones de archivos.

Sustitución de cadenas en todos los archivos

Util para sustituir cadenas en todos los archivos del directorio actual y de manera recursiva dentro de todos sus demás directorios también:

find . -type f -print0 |xargs -0 perl -p -i -e 's/Cadena/Palabra/g'

perl -p -i -e 's/Cadena/Palabra/g' `grep -ril Cadena *`

Por ejemplo, en WordPress, para crear un nuevo tema llamado Poet y totalmente basado en el tema Twenty Eleven, es necesario usar:

find . -type f -print0 |xargs -0 perl -p -i -e 's/Twenty Eleven|Twenty_Eleven/Poet/g';

find . -type f -print0 |xargs -0 perl -p -i -e 's/twentyeleven_/poet_/g';

find . -type f -print0 |xargs -0 perl -p -i -e 's/twentyeleven/poet/g';