Miré otras preguntas similares, pero no encontré una que me permitiera comprender el concepto y hacerlo aplicable a mi situación en función de mi tiempo limitado. Simplemente estoy ejecutando el comando find para encontrar ciertos archivos, pero algunos archivos en subdirectorios tienen el mismo nombre que quiero ignorar. Gracias por cualquier ayuda. A continuación se muestra el comando que estoy usando:
Los archivos / patrones en los que estoy interesado: / dev / abc-scanner, / dev / abc-cash ...
El comando:
find /dev/ -name 'abc-*'
Lo que se devuelve:
/dev/abc-scanner
/dev/abc-cash
...
...
...
/dev/.udev/names/abc-scanner
/dev/.udev/names/abc-cash
Quiero ignorar los últimos archivos: /dev/.udev / ...
Respuestas:
Si solo desea limitar la búsqueda al primer nivel, puede hacer lo siguiente:
... o si particularmente desea excluir el
.udev
directorio, puede hacer:fuente
xargs
, así que algo así como:find /dev -maxdepth 1 -name 'abc-*' | xargs ls -l
pero si hay alguna posibilidad de que tengan espacios en blanco en los nombres, deberías hacerlofind /dev -maxdepth 1 -name 'abc-*' -print0 | xargs -0 ls -l
ls -l /dev/abc-*
for x in /dev/abc-*; do readlink -f $x; done
ls -l /dev/abc-* /dev/*/abc-* | fgrep -v /dev/.udev
... excepto que al menos en mi Linux/dev/*/*
no incluye archivos, por/dev/.udev/*
lo que puede omitir elfgrep -v
.¿Hay alguna razón en particular que necesites usar
find
? Simplemente puede usarls
para buscar archivos que coincidan con un patrón en un directorio.Si necesita usarlo
find
, puede usar el-maxdepth 1
interruptor para aplicar solo al directorio especificado.fuente
-maxdepth 1
lugar de-maxdepth 0
ls
. Puede encontrar los mismos archivos conecho
o conwc
lo que tiene, porque el shell expande el comodín por usted. Entonces,for file in /dev/abc-*; do something with each "$file"; done
podría ser lo que el OP realmente está buscando.find
no lo tiene, por ejemplo.ls
es superfluo.for f in abc*; ...
es todo lo que necesitas.Esto puede hacer lo que quieras:
fuente
No funciona para mi No devuelve nada. Si solo hago '.' me da todos los archivos en el directorio debajo del que estoy trabajando.
No devuelva nada con '.' en su lugar obtengo una lista de todos los archivos 'grandes' en mi directorio, así como el directorio raíz / donde guardo los archivos antiguos.
Continuo. Esto funciona.
Aparentemente
/dev
significa directorio de interés. Pero./
es necesario, no solo.
. La necesidad de esto/
no era obvia incluso después de que descubrí qué/dev
significaba más o menos.No pude responder como un comentario porque no tengo 'reputación'.
fuente