Pregunta:
Mejor explicar con ejemplos.
Yo puedo:
find . -name "*.py" -type f > output.txt
Pero, ¿cómo puedo almacenar la salida en el mismo archivo para:
find . -name "*.py" -type f -exec grep "something" {} \
No puedo simplemente hacer
find . -name "*.py" -type f -exec grep "something" {} \ > output.txt
Respuesta:
Si te entiendo correctamente, esto es lo que quieres hacer:
find . -name '*.py' -print0 | xargs -0 grep 'something' > output.txt
Busque todos los archivos con extensión .py
, grep
solo las filas que contengan something
y guarde las filas en output.txt
. Si el archivo output.txt
existe, se truncará; de lo contrario, se creará.
Usando -exec
:
find . -name '*.py' -exec grep 'something' {} \; > output.txt
Estoy incorporando comentario Chris Downs aquí: El comando anterior dará lugar a grep
está ejecutando tantas veces como find
hallazgos nombres de ruta que pasa las pruebas dadas (sólo el único -name
de la prueba anterior). Sin embargo, si reemplaza el \;
con un +
, se llama a grep
con varios nombres de ruta desde find
(hasta un cierto límite).
Consulte la pregunta Uso de punto y coma (;) frente a más (+) con exec en buscar para obtener más información sobre el tema.