Estoy tratando de obtener todos los archivos por máscara en algún directorio sin buscar recursivamente en los subdirectorios. No hay opción -maxdepth 0
en AIX para eso.
Escuché sobre -prune
, pero todavía no puedo entender cómo funciona.
Supongo que el comando debería parecerse a
find dir \( ! -name dir -prune -type f \) -a -name filemask
pero no funciona.
¿Podría escribirme un comando correcto y explicarme cómo funcionará?
UPD
Parece comando
find dir ! -path dir -prune
imprime todos los archivos y catálogos en dir
, pero no archivos y catálogos en dir/*
, para que pueda usarlo en mi caso.
Respuesta aceptada:
Querrás:
find dir/. ! -name . -prune -type f -name filemask
O:
find dir ! -path dir -prune -type f -name filemask
Para encontrar los archivos regulares llamados filemask
en dir
sin buscar en subdirectorios de dir
.
Con find dir ! -name dir -prune
, tendría problemas si hubiera un dir/dir
directorio.
El dir/.
el enfoque soluciona eso porque find
no encontrará ningún otro archivo llamado .
que ese dir/.
archivo pasado como argumento.
La -path
El enfoque lo soluciona mirando la ruta del archivo de los archivos (en lugar de solo el nombre), -path dir
coincidirá con dir
, pero no en dir/dir
(así que dir
será el único directorio que no se eliminará). -path
aunque es posible que no esté disponible en versiones anteriores de AIX.
De manera más general, para el equivalente estándar de -maxdepth n
de GNU , consulte ¿Limitar la búsqueda de POSIX a una profundidad específica?