Estoy tratando de aprender los comandos de UNIX y estoy jugando este juego para aprender y estoy realmente atrapado en este momento. Estoy en un servidor a través de ssh y el directorio está lleno de archivos y carpetas al azar y la contraseña para el siguiente nivel está dentro de uno de los archivos. Me han dicho que el archivo tiene los siguientes atributos:
- legible por humanos
- 1033 bytes
- no ejecutable
Supongo que debería usar el findcomando y lo intenté, find ! -executablepero eso devolvió una carga de archivos. La única ayuda legible para humanos que puedo encontrar en el manual o en línea es imprimir los tamaños de los archivos en legibles para humanos. ¿Entonces estoy un poco perdido allí?
También lo intenté find ~ -size 1033bpero eso no devolvió nada. Pero cuando lo intenté find ~ -size -1033b, devolvió todos los archivos del directorio.
fuente

Respuestas:
Para filtrar los nombres de archivo legibles por humanos, puede hacer uso del nombre de la clase de caracteres
[:print:]( imprimible ) . Encontrará más información sobre tales clases en el manual de .grepPensándolo bien, el requisito de "lectura humana" podría referirse al contenido del archivo, en lugar de su nombre. En otras palabras, estaría buscando archivos de texto . Eso es un poco más complicado. Como @D_Bye sugirió en un comentario, debe usar el
filecomando para determinar el tipo de contenido del archivo. Pero no sería una buena idea correrfiledespués de una tubería, porque complicaría la tarea de mostrar el nombre del archivo. Esto es lo que sugiero:Así es brevemente cómo
filefunciona la parte:-execpredicado se ejecutash -c 'file -b $0 | grep -q text' FILENAMEpara cada unoFILENAMEque satisfaga todas las condiciones anteriores (tipo, tamaño, no ejecutable).sh) ejecuta este breve script :,file -b $0 | grep -q textreemplazando$0con el nombre del archivo.fileprograma determina el tipo de contenido de cada archivo y genera esta información. La-bopción impide imprimir el nombre de cada archivo probado.grepfiltra la salida proveniente delfileprograma, buscando líneas que contengan "texto" . (Vea usted mismo cómo sefileve una salida típica del comando).grepno genera el texto filtrado, porque tiene la-qopción (silenciosa) dada. Lo que hace es cambiar su estado de salida a0(que representa "verdadero" - se encontró el texto filtrado) o 1 (que significa "error" - el texto "texto" no apareció en la salida defile).grepse pasa másshafinday actúa como el resultado final de la "-exec sh -c 'file $0 | grep -q text' {} \;" prueba completa.-printse ejecuta el comando (es decir, se imprime el nombre del archivo probado).fuente
find . -type f -size 1033ctambién devolverá exactamente la misma respuesta.Tenga en cuenta que usé en
clugar debpara el tamaño del archivo.bes para bloques de 512 bytes.ces para bytes reales.fuente
-readablelegible para humanos (es decir, no binario)findafile.todo lo que escribí fue:
y obtuve el archivo. Aparentemente, la parte legible para los humanos era desanimarte.
fuente
fuente
Creo que para el juego, sin embargo, la sintaxis correcta es:
Obtiene una declaración que enumera en qué consiste cada archivo. Funcionó muy bien para lo que intentas lograr en el juego Bandit. La bola curva real para esta tarea es que cada archivo comienza con - (guión).
fuente
file ./-*este.Creo que esta es la mejor respuesta real que cubriría las 3 condiciones
Pero como mucha gente dijo, el ejecutable y el legible para humanos nos iban a dejar fuera, así que usando
es suficiente!
fuente