Digamos que hay archivos con nombres:
batman.c
debate.c
cricketbat.c
¿Qué comando y cómo debo usarlo para enumerar todos estos archivos usando la etiqueta de búsqueda bat
?
command-line
files
search
find
srk_cb
fuente
fuente
Respuestas:
Encontrar archivos con
bat
cualquier lugarPara encontrar todos los archivos en cualquier lugar dentro de
/path/to/folder
cuyos nombres contenganbat
, puede usar:He citado el patrón de búsqueda
*bat*
, ya que, si se omiten las comillas y los archivos coinciden*bat*
en el directorio actual, la cáscara se expandirá*bat*
en una lista de ellos y pasar que afind
. Entoncesfind
no funcionaría bien. (\*bat\*
y"*bat*"
también trabajo)Para buscar en la carpeta en la que se encuentra actualmente (por ejemplo, en la que ha
cd
editado), use.
, como de costumbre:Para buscar en toda su computadora, use
/
. Para buscar en su directorio de inicio, use~
o el nombre completo de su directorio de inicio. ( El shell se expande~
a la ruta completa de su directorio de inicio).Ampliar o reducir su búsqueda, según el nombre
Si desea buscar sin distinción entre mayúsculas y minúsculas, para que los archivos que contienen
BAT
,bAt
etc., coincidan, use la-iname
prueba en lugar de la-name
prueba:He notado que todos tus archivos terminan en
.c
. Si solo desea encontrar archivos como ese, use:Noté que todos sus nombres de archivo tienen
bat
ya sea al principio o al final de la parte que precede al.c
sufijo. Si desea evitar la coincidencia de archivos comoembattled.c
, puede usar:-o
es el operador o .Solo archivos coincidentes
Para buscar solo archivos normales, y no carpetas, enlaces simbólicos y nodos de dispositivos especiales, puede usarlos
-type f
. Esto se recomienda con frecuencia y, a veces, es bastante apropiado ... pero a menudo no es lo que realmente desea , especialmente si está ejecutandofind
con el fin de examinar la salida usted mismo. Si tuviera un enlace simbólico que coincidiera con su búsqueda, ¿no le gustaría saberlo?Si desea encontrar archivos regulares y enlaces simbólicos, puede usar:
Eso usa el
-o
operador y también paréntesis para la agrupación (que debe citarse para que el shell no los trate especialmente; de lo contrario, obtendrá un error de sintaxis).Pero suponga que solo desea ver enlaces simbólicos que finalmente apuntan a un archivo normal (y no enlaces simbólicos a directorios, nodos de dispositivos, etc.). En realidad, eso es aún más simple: usar en
-xtype
lugar de-type
. Siempre que no se esté ejecutandofind
con una-L
marca,-xtype
en un enlace simbólico se prueba el tipo de archivo al que apunta el enlace.Si tiene un enlace simbólico a otro enlace simbólico a un archivo,
-xtype f
lo emparejará aunque su objetivo directo sea otro enlace simbólico en lugar de un archivo normal. Esto es casi siempre lo que quieres.A menudo las personas piensan que quieren
-type f
, pero realmente quieren-xtype f
.Obteniendo salida detallada
find
La acción predeterminada de si no especifica una es-print
. Todos los comandos dados anteriormente son equivalentes a sí mismos con-print
tachuelas al final.find
a menudo se usa para ejecutar comandos basados en los archivos encontrados, a menudo, comandos que realizan cambios. Pero también hay otras acciones cuyo propósito es mostrar resultados, además-print
. De particular interés es-ls
:Esto proporciona información detallada sobre cada archivo, en un formato de varias columnas, similar (aunque no exactamente igual) a lo que vería al ejecutar .
ls file
Otras lecturas
Para obtener más información
find
y otras formas de buscar archivos, consulte:find
página del manual , accesible en línea o ejecutándoseman find
en una terminal.find
,locate
yxargs
los servicios públicos.fuente
-xtype
consejo; quizásls *bat*
y-maxdepth
/mindepth
también valen la pena mencionar.ls
ya cubría , me concentré en el caso recursivofind
aquí. Por supuesto, una respuesta detallada que abarque una lista no recursiva (o menos) de nombres de archivos que coincidan con algún patrón (ls
yfind
con-maxdepth
) también sería útil. Es posible que desee publicar una respuesta!La forma más fácil es correr
De esta manera, puede buscar en toda la computadora archivos que contengan "bat" en el nombre del archivo
Para actualizar la lista de archivos en su PC, ejecute
Ejecute este comando cuando haya agregado recientemente nuevos archivos a su cuenta
fuente
updatetdb
updatedb
se ejecutó la última vez de forma manual o automática),sudo updatedb
primero debería ejecutarse, sí.bat
.find /
quelocate
las búsquedas de una base de datos, mientras quefind
las listas de forma recursiva/
y luego coincide con la expresión regular.Abra el terminal y cambie los directorios al directorio desde el que desea comenzar a buscar y luego ejecute este comando:
El
.
inicia el comando de búsqueda desde el directorio actual.El
-name
coincide con la cadenabat
y distingue entre mayúsculas y minúsculas. (-iname
Es sensible a mayúsculas)Las
-type f
búsquedas de archivos únicos.fuente
Si los archivos están en el directorio actual, use:
O (para tenerlos línea por línea):
Si desea buscar esos archivos en el sistema, use:
fuente
Desea utilizar el
find
comando, con la-iname
opción de coincidencia de nombre de archivo sin distinción entre mayúsculas y minúsculas, o la-name
opción de coincidencia de nombre de archivo con mayúsculas y minúsculas. Ambos le permitirán usar nombres comodín. Entonces, para encontrar cualquier nombre de archivo que contenga "bat" usaría:O
Los
*
medios "cualquier carácter (s)", por lo que la búsqueda está buscandobat
con cualquier carácter, incluyendo ninguno, antes o después de ella. Las/
búsquedas desde el directorio raíz de forma recursiva, puede utilizar.
lo que buscará recursivamente desde el directorio actual, o la ruta absoluta desde donde desea buscar. Eche un vistazo a cómo buscar archivos usando expresiones regulares en el script de shell de Linuxfuente
-type f
, que hace más que simplemente excluir directorios y, a menudo, no es lo que los usuarios realmente quieren .Usa lo bueno de siempre
find
.p.ej.:
de
man find
:fuente