Desde la línea de comandos, ¿cuál es la forma más fácil de mostrar el contenido de varios archivos? Mi directorio se ve a continuación.
./WtCgikkCFHmmuXQXp0FkZjVrnJSU64Jb9WSyZ52b
./xdIwVHnHY7dnuM9zcPDYQGZFdoVORPyMVD2IzjgM
./GZnATXO1e5Hh3Bz1bhgJjjwheIjjZqtnXR0hfOyj
./mWz7ehBNoTZmtDh8JG6sxw2lMJFwIovPzxDGECUY
./JN65F5v3RL2ilHPqNSx9N9D4lvVpqpbJ9lASd8TJ
./At9PS4y4nTiXUO0Z0USnbYkTPBla1msQRpwuruqE
./YiPyMZPCaUDZTiTczAvWII9bJrUqLXCFtH2pXEA2
./JoakdlbRFPwAvWp1d4n8RvMoyMeizCoiriL2Sn2U
./wFPWZUus8Yu7UtESGABLCoqDg36cT90USO0xuyUr
./qseI9PgV1EJfZCDyGGeVytajqG7JeX0r7eA5S1JW
./zgFJpNgXyCsaVh38aCuMGuzHwIbwSNB6rQDdh27x
./.htaccess
Ahora me gustaría ver el contenido de todos los archivos excepto .htaccess
. Podría parecerse a algo como:
WtCgikkCFHmmuXQXp0FkZjVrnJSU64Jb9WSyZ52b:
Contents of file WtCgikkCFHmmuXQXp0FkZjVrnJSU64Jb9WSyZ52b.
xdIwVHnHY7dnuM9zcPDYQGZFdoVORPyMVD2IzjgM:
Contents of file xdIwVHnHY7dnuM9zcPDYQGZFdoVORPyMVD2IzjgM.
[...]
Creo que esto debería ser posible con una combinación de find, xargs y cat, pero no he descubierto cómo. ¡Gracias por tu tiempo!
command-line
files
Znarkus
fuente
fuente
Respuestas:
Los dos comandos estándar
head
etail
imprimen un encabezado con el nombre del archivo si les pasa más de un argumento de archivo. Para imprimir todo el archivo, usetail -n +1
(imprimir desde la primera línea en adelante, es decir, todo).Aquí, parece que desea ver todos los archivos, excepto el único cuyo nombre comienza con un punto. Los archivos de puntos están "ocultos" en Unix: no aparecen en la salida predeterminada
ls
o en una coincidencia de comodines. Por lo tanto, la coincidencia de todos los archivos no ocultos se realiza con solo*
.(Estrictamente hablando,
tail -n +1 -- *
es necesario en caso de que uno de los nombres de archivo comience con a-
.)fuente
--
modificador?--
significar el final de las opciones es una convención que la mayoría de los comandos obedecen. Por ejemplo,tail -n +1 -- -f -g
dicetail
eso-f
y-g
son archivos para leer (operandos) y no opciones. Es la directriz 10 en la directriz de sintaxis de la utilidad POSIX (un documento destinado a escritores de utilidades). No tengo una sugerencia de lectura destinada a usuarios finales, esperaría un buen tutorial de Unix para cubrirlo en algún momento.find
, pero luego utilizan algún ejecutivo con el formato de impresión: Una forma sencilla de utilizarfind
ytail
es:find . -type f -print0 -name "*" | xargs -0 tail -n +1 --
(-print0
yxargs -0
, y el--
asegurar que el comando también funciona con nombres de archivo con espacios o comenzar con -)Puedes hacerlo todo en uno con
find
:Eso dice
find
que busque todos los archivos (-type f
) en el directorio actual (.
) excepto (-not
) uno llamado.htaccess
(-name .htaccess
). Luego imprime (-printf
) una nueva línea seguida del nombre del archivo (%p
), y luego se ejecutacat
en el archivo (-exec cat {} \;
). Eso te dará resultados como:Si hace esto a menudo, puede valer la pena incluirlo en un script de shell o una función; Tengo uno llamado
cats
que hace exactamente eso:Recorre cada argumento de nombre de archivo, imprime el nombre de archivo (en negrita verde) y luego captura el archivo:
Entonces, el comando sería:
fuente
Para mostrar el contenido de todos los archivos en la carpeta actual, intente:
y similar, pero recursivamente:
El formato sería:
filename: content
.Para tener un formato similar al sugerido, sería:
Notas al margen:
\x00
) en los ejemplos anteriores evita la visualización de archivos binarios (que en-I
realidad está funcionando, pero aún tenemos que usar algún patrón).*
), automáticamente ignora los archivos ocultos como.htaccess
.Vea también: grep: muestre el nombre de archivo una vez, luego muestre el contexto con números de línea en Unix SE
fuente
grep -r ^
lo general es suficiente.Puedes usar esto:
fuente
Si desea afinar y no perder demasiado tiempo con las tuberías, busque y todo (aunque es la cadena de herramientas más poderosa que pueda encontrar)
solo intenta usar un bucle for, cat, etc.
fuente
Si desea imprimirlo también, use recursivamente (para archivos con extensión .sql, por ejemplo):
fuente