Si desea excluir una ruta, debe hacer que coincida correctamente en la -path
opción. La opción requiere que escriba una ruta totalmente coincidente, incluido el prefijo de ruta absoluta, por lo que simplemente /2012/
no es suficiente.
find /home/myid/dir-with100directories/ -mmin -5 \
-not -path '/home/myid/dir-with100directories/2012/*'
O:
cd /home/myid/dir-with100directories/
find . -mmin -5 -not -path './2012/*'
Si desea excluir cualquier carpeta con el nombre 2012
, con GNU find
:
cd /home/myid/dir-with100directories/
find . -regextype posix-extended -not -regex '.*/2012\(/.*\)?'
O, para podar directorios con el nombre 2012
:
cd /home/myid/dir-with100directories/
find . -type d -and -name '2012' -prune -o -print
Lo anterior imprimirá todo lo demás como una acción (ver aquí para más información).
Si usa Bash, puede omitir un 2012
directorio de inmediato:
shopt -s extlob
find /home/myid/dir-with100directories/!(2012) -mmin -5
La misma idea con Zsh:
setopt extendedglob
find /home/myid/dir-with100directories/^2012 -mmin -5
-path '*/2012*'
, pero esto también excluiría los archivos que comienzan con2012
. Ofind . -regextype posix-extended -not -regex '.*/2012\(/.*\)?'
.-path
con una barra inclinada, no excluirá todo lo que está debajo del directorio, solo el directorio en sí. Prueba laprune
opción que agregué a mi respuesta.Consulte la opción
-prune
en la página de manual de find, y un ejemplo en la descripción de la opción-path
.fuente