BandaAncha.eu

Comunidad de usuarios
de fibra, móvil y ADSL

Shell script para encontrar ficheros por criterio

BocaDePez
BocaDePez

Hola:

Tengo un problema con esta instrucción:

find /home \( -size +10M -fprintf %u \%u\ \%+13s\ \%p\\n \)

Pretendo sacar un listado de todos los ficheros mayores de 10 megas, en una máquina con unos 25 usuarios, haciendo un solo recorrido por el árbol de directorios, y escribiendo la salida en un fichero independiente por cada usuario cuyo nombre es el del usuario. Así consigo varios listados de ficheros que contravienen las normas, y que puedo enviar directamente a cada usuario.

Lo primero que viene tras -fprintf es el nombre del fichero donde quiero que se escriba la salida. %u es el nombre del usuario, que quiero usar para el fichero, pero no me deja. Sólo consigo crear un fichero llamado %u, aunque le ponga comillas, paréntesis o lo que sea, escapados o sin escapar, el resultado es un fichero llamado %u, o '%u, o \%u o tantas otras cosas, pero no consigo crear un fichero distinto por usuario. Parece como si lo que viene después de -fprintf fuera absolutamente incapaz de interpretarlo de alguna manera.

La instrucción está inspirada en el man de find, aunque yo tuve que escapar los % y los espacios. ¿Alguna idea?

BocaDePez
BocaDePez
-1

Sí, la idea es que en tu empresa contraten a un informático de verdad y no a un intruso. A ver si te "apuntas" la idea en el lomo del cuadernillo de la acamdemia que te dio el falso título de informático.

NO al intrusismo informático.

🗨️ 3
BocaDePez
BocaDePez

Bueno, la verdad es que yo no soy la informática. Efectivamente, es intrusismo.

🗨️ 2
BocaDePez
BocaDePez
-1

Tú, si no eres informática, tranquila. Tiran más dos tetas que dos mil títulos informáticos.

🗨️ 1
BocaDePez
BocaDePez
-1

Pero como a mí sólo me van las ubres de las cabras, creo que te vas a quedar a dos velas.

BocaDePez
BocaDePez

Yo creo que no puedes hacerlo de la forma que quieres. Parece que el argumento "filename" de fprintf no interpreta el formato que indicas, sino que sólo se usa para el segundo argumento:

git.savannah.gnu.org/cgit/findutils.git/…ind/parser.c

Podrías hacerlo en dos pasos. Primero guardar la salida en un fichero y luego usar awk para el filtrado por ficheros de usuarios.

BocaDePez
BocaDePez
-1

Yo me convertí en un experto en Bash, pero como tu post es del mes pasado tal vez ya te has muerto de hambre, a causa de la crisis, y yo estoy hablando con un fantasma.

Eso que tú pretendes hacer es fácil. Yo sería capaz de hacerlo en un momento, pero ahora estoy en la fase solar que me impide ayudar a los newbies, y mi religión me impide manifestarme dándote la respuesta antes del año 2012.

Tengo poderes de scripts. Una de las cosas más boni­tas es la de poder qui­tar ­los virus, he curado a un negro de SIDA y tam­bién puedo qui­tar los virus de las máqui­nas "ibe-eme-eme", como una empresa en que un téc­nico lle­vaba doce horas sin lograrlo. Miré al cielo y dije: "Jesús haz acto de pre­sen­cia", puse las manos y pum, pum, en un momento, quité los virus de la máquina.

🗨️ 4
BocaDePez
BocaDePez

que fumas??

🗨️ 1
BocaDePez
BocaDePez
-1

No fumo nada. Estoy colocado de fábrica.

BocaDePez
BocaDePez

Las máquinas de IBM no tienen virus.

Cualquier Pc que lleve el logo de IBM no deja de ser un vulgar Pc y se comporta como tal.

Cuando estés colocado, por favor no vengas por aquí.

🗨️ 1
BocaDePez
BocaDePez
-1

He visto mundos que vosotros no podéis imaginar, he estado en Ganímedes, el Sol, Antercherán o Raticulín, todo desde el momento que Jesús se me materializó en la calle Provenza, trece-quince, segundo primera, delante de una churrería.