¿Qué significa "{} \;" en find (en Linux)?

3

A veces veo un comando como

find . -name * -exec ls -a {} \;

Me pidieron que ejecutara esto.

¿Qué {} \;significa aquí?

codeofnode
fuente
Esta pregunta es similar, ¿te ayuda?
Jon
Mencione qué sistema operativo está utilizando. Hay findcomandos para Unix, Linux, OSX, Windows y probablemente todo lo demás. Parece * nix pero no puedo estar seguro.
terdon
Sí, encontré las buenas respuestas aquí askubuntu.com/questions/85709/…
codeofnode

Respuestas:

5

El \;es ;alimentado al programa (buscar) por el \escape evitando que sea manejado por el shell (normalmente separaría los comandos). El -execargumento interpreta todo como un comando hasta el insertado ;que termina las -execcosas. Dentro de las -execcosas, un argumento de {}significa "insertar el nombre del archivo aquí". Entonces, si los archivos fueran "foo" y "bar", ejecutaría "ls -a foo" y luego "ls -a bar". Entonces, todo ese significado solo significa eso porque -execestá ahí.

La -name *parte de esto podría haber estado entre *comillas. Si no está entre comillas, hará cosas muy impredecibles porque todos los nombres de archivo se insertarán en lugar del *que tiene, y esos nombres pueden hacer cosas malas con este comando. Deje -name *afuera para una ejecución más segura de este comando (pero no sé sus intenciones de entender por qué eso estaba allí).

Skaperen
fuente