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?
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?
Respuestas:
batcualquier lugarPara encontrar todos los archivos en cualquier lugar dentro de /path/to/foldercuyos nombres contengan bat, puede usar:
find /path/to/folder -name '*bat*'
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 a find. Entonces findno 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 cdeditado), use ., como de costumbre:
find . -name '*bat*'
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).
Si desea buscar sin distinción entre mayúsculas y minúsculas, para que los archivos que contienen BAT, bAtetc., coincidan, use la -inameprueba en lugar de la -nameprueba:
find /path/to/folder -iname '*bat*'
He notado que todos tus archivos terminan en .c. Si solo desea encontrar archivos como ese, use:
find /path/to/folder -name '*bat*.c'
Noté que todos sus nombres de archivo tienen batya sea al principio o al final de la parte que precede al .csufijo. Si desea evitar la coincidencia de archivos como embattled.c, puede usar:
find /path/to/folder -name '*bat.c' -o -name 'bat*.c'
-oes el operador o .
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á ejecutando findcon 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:
find /path/to/folder -name '*bat*' \( -type f -o -type l \)
Eso usa el -ooperador 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 -xtypelugar de -type. Siempre que no se esté ejecutando findcon una -Lmarca, -xtypeen un enlace simbólico se prueba el tipo de archivo al que apunta el enlace.
find /path/to/folder -name '*bat*' -xtype f
Si tiene un enlace simbólico a otro enlace simbólico a un archivo, -xtype flo 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.
findLa acción predeterminada de si no especifica una es -print. Todos los comandos dados anteriormente son equivalentes a sí mismos con -printtachuelas al final.
finda 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:
find /path/to/folder -name '*bat*' -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
Para obtener más información findy otras formas de buscar archivos, consulte:
findpágina del manual , accesible en línea o ejecutándose man finden una terminal.find, locatey xargslos servicios públicos.-xtypeconsejo; quizás ls *bat*y -maxdepth/ mindepthtambién valen la pena mencionar.
ls ya cubría , me concentré en el caso recursivo findaquí. Por supuesto, una respuesta detallada que abarque una lista no recursiva (o menos) de nombres de archivos que coincidan con algún patrón ( lsy findcon -maxdepth) también sería útil. Es posible que desee publicar una respuesta!
La forma más fácil es correr
locate bat
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
updatedb
Ejecute este comando cuando haya agregado recientemente nuevos archivos a su cuenta
updatetdb
updatedbse ejecutó la última vez de forma manual o automática), sudo updatedbprimero debería ejecutarse, sí.
bat.
find /que locatelas búsquedas de una base de datos, mientras que findlas 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:
find . -name "*bat*" -type f
El .inicia el comando de búsqueda desde el directorio actual.
El -namecoincide con la cadena baty distingue entre mayúsculas y minúsculas. ( -inameEs sensible a mayúsculas)
Las -type fbúsquedas de archivos únicos.
Si los archivos están en el directorio actual, use:
$ ls *bat*
batgirl.c batman.c batwoman.c cricketbat.c
O (para tenerlos línea por línea):
$ ls -1 *bat*
batgirl.c
batman.c
batwoman.c
cricketbat.c
Si desea buscar esos archivos en el sistema, use:
$ find / -name "*bat*"
/path/to/cricketbat.c
/path/to/batgirl.c
/path/to/batwoman.c
/path/to/batman.c
Desea utilizar el findcomando, con la -inameopción de coincidencia de nombre de archivo sin distinción entre mayúsculas y minúsculas, o la -nameopció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:
find / -iname '*bat*'
O
find / -name '*bat*'
Los *medios "cualquier carácter (s)", por lo que la búsqueda está buscando batcon 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 Linux
-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.
find <path_for_search> -type f -iname "*bat*"
p.ej.:
% find . -type f -iname "*bat*"
./batgirl.c
./batwoman.c
./cricketbat.c
./batman.c
de man find:
-type c
File is of type c:
[..]
d directory
[..]
f regular file
[..]
-iname pattern
Like -name, but the match is case insensitive.