Necesito buscar archivos que comiencen con algún nombre en particular. Puede haber múltiples archivos comenzando con un patrón particular y quiero enumerar todos esos archivos presentes en el directorio.
58
Para completar las respuestas existentes:
ls
La utilidad de lista de directorio predeterminada ls
se puede usar en combinación con los comodines del shell. Para buscar todos los archivos con patrón abc
:
ls abc* # list all files starting with abc---
ls *abc* # list all files containing --abc--
ls *abc # list all files ending with --abc
Tenga en cuenta que la extensión del archivo también es relevante para los resultados de búsqueda.
tree
En caso de que necesitemos enumerar archivos en un árbol de directorios, también podemos emitir tree
para buscar un patrón dado como:
tree -P 'abc*' # list directory tree of file starting with abc---
tree -l 'def*' # exclude files starting with def---
En este caso, tree
sí admite comodines.
ls -l B*
, muestra el contenido de todos los directorios que comienzan enB
lugar de solo los nombres de los directorios coincidentes?ls
un directorio, lo abre, es lo mismo que hacerls -l BirthdayPhotos
. Puede suprimir ese comportamiento conls -d B*
.B*
como una especificación de directorio?B*
expande para coincidir con todos los directorios que comienzan, porB
lo que realmente está pasandols
una lista de directorios, por lo que los abre todos para usted.ls -d ABC*
era sobre lo que el autor preguntaba. También los comentarios en el fragmento de código son incorrectos,ls abc*
enumera el contenido de los directorios que comienzan con abc.Puede usar el
find
comando para buscar archivos con patrónEl comando anterior buscará el archivo que comienza con abc en el directorio de trabajo actual.
-name 'abc'
enumerará los archivos que coinciden exactamente. Por ejemplo: abcTambién puedes usar
opción con
find
comando para buscar nombre de archivo usando un patrónfuente
Hay muchas formas de hacerlo, dependiendo exactamente de lo que quieras hacer con ellos. En general, si solo desea enumerarlos, puede hacerlo en una terminal usando:
find | grep '^\./ABC'
... y reemplazando
ABC
con su texto.Para entender el comando, analicemos un poco:
find
enumera todos los archivos en el directorio actual y sus subdirectorios; usarlo solo enumerará todo allí. Tenga en cuenta quefind
genera cada archivo o directorio que comienza con./
, lo que indica que su ruta es relativa al directorio actual. Ser consciente de esto es importante porque significa que buscaremos resultados que comiencen./ABC
y no soloABC
.El carácter de canalización
|
redirige la salida de un comando a otro, en este caso la salida defind
se redirige agrep
. Esto se llama tubería.grep
toma la salida y lo filtra utilizando el patrón dado,^\./ABC
.' '
para evitar que el intérprete interprete los caracteres especiales que contiene.Ahora el patrón en sí está escrito en una sintaxis particular llamada expresión regular , o expresión regular para abreviar. Regex es una herramienta de búsqueda extremadamente poderosa si la dominas, y hay sitios como este que te enseñan sobre ello con más profundidad, pero ten en cuenta que
grep
no es un motor de expresiones regulares completo y no puedes hacer todo con él.Para nuestro propósito:
^
en regex coincide con el comienzo de la cadena; esto evita que coincida con el patrón si no aparece al comienzo del nombre del archivo..
en regex también tiene un significado especial: significa "hacer coincidir cualquier carácter aquí". En caso de que quiera usarlo como un punto literal, tendrá que "escapar" usando una barra invertida\
antes. (Sí, emparejar cualquier personaje sería inofensivo en nuestro caso, pero lo hice por completo).fuente
find | grep
cuandofind
tiene sus propias capacidades de coincidencia de patrones perfectamente buenas?puede usar GREP, creo que esta es la solución más simple, probablemente también agregue algunos otros parámetros grep para que la coincidencia sea más precisa
fuente
Puede buscar un patrón en particular utilizando el administrador de archivos Nautilus y las expresiones regulares.
Para hacerlo, haga clic en Seleccionar elementos que coincidan en el menú de engranaje como se muestra a continuación (también puede presionar Ctrl+ s).
Luego, simplemente escriba la expresión regular
ABC*
y valide.Cada archivo cuyo nombre coincida con su patrón se seleccionará automáticamente.
Estoy usando Nautilus 3.6. * De GNOME3 PPA en Ubuntu 12.10 (Quantal).
fuente
La solución más fácil para mí
Aquí puede dar cualquier expresión regular en el PATRÓN.
Por ejemplo, para buscar archivos con "ab" en cualquier lugar dentro de su nombre, escriba
Para buscar los archivos que comienzan con "ab", escriba
fuente
Si no conoce el directorio en el
ABC*
que se encuentran los archivos y tiene millones de archivos, ellocate
comando es el método más rápido.Notas:
find
comando que comienza en el/
directorio raíz llevará mucho tiempo y generará muchos errores de permiso.sudo updatedb
primero debe ejecutarlos .fuente
yo suelo
o
Muestra todos los archivos con abc, no solo comienza con abc. Pero, es una manera realmente fácil para mí de hacer esto.
fuente
Pitón:
Perl:
fuente
Esta es una coincidencia de patrón glob que está anclada en ambos extremos. Esto coincidirá con todas las apariciones de archivos que comienzan con "ABC", como "ABC", "ABC.txt", "ABC123", pero no "xABC". Desde la línea de comando usando 'ls' en lugar de 'printf' aquí hay una alternativa segura, sin embargo, dependiendo de con quién esté de acuerdo, 'ls' no es seguro para usar en un script. En ese caso, usar 'printf' con coincidencia de patrón global se considera seguro. Si va a usar esto en un script, la salida de 'printf' no contendrá un nuevo carácter de línea hasta el final de la secuencia de salida como tal:
Devoluciones:
Si necesita saltos de línea después de cada instancia:
Devoluciones:
"/ ruta / a / archivos /" permanece en la salida si lo ingresó de esa manera cuando ejecutó el comando 'printf'. Sin él solo aparece el nombre del archivo:
Devoluciones
Suponiendo que ejecuta el comando dentro del directorio en el que existen los archivos.
fuente
echo /path/to/files/ABC* | tr " " "\n"
no es una buena idea. Considere si hay un archivo/path/to/files/ABC EFG
, hay un espacio en el nombre del archivo. Sutr
dividirá el nombre del archivo en dos líneas separadas, lo que no es bueno. Peor aún si hay múltiples espacios en el nombre del archivo. En suprintf "%s\n" ABC*
lugar, le recomiendo que use , lo que debería ayudar con espacios en los nombres de archivo, pero sigue siendo problemático con otros caracteres especiales como\n
Command-t en uno de mis complementos vim favoritos, es un complemento basado en ruby que está por encima de la integración con FZF.
Mediante el uso de Comamnd-T y FZF, puede realizar la búsqueda con un mecanismo "difuso" extremadamente rápido para:
Como puedes ver
Siempre busco en el historial de comandos abriendo una nueva terminal y presiono:
Además de buscar en todas las carpetas de forma recursiva escribiendo en cualquier pestaña de terminal:
Luego comienza tu nombre de archivo
Además, puedes escribir adentro
vim
Realmente útil especialmente en carpetas grandes.
fuente
Suponga que estoy en el directorio raíz y solo quiero la lista del directorio etc: escribimos,
resultado que obtenemos,
Otro ejemplo,
También podemos escribir:
obtenemos,
fuente