BashFAQ/056 hace un trabajo decente de explicar por qué lo que probaste no funciona. Echar un vistazo.
Dado que está utilizando bash (según su error), el comando for
es su amigo.
for filename in *.php; do
echo "text" >> $filename
done
Si desea tirar de "texto" de un archivo, en lugar podría hacer esto:
for filename in *.php; do
cat /path/to/sourcefile >> $filename
done
Ahora ... fuerza tiene archivos en los subdirectorios. Si es así, usted podría utilizar el comando find
de encontrar y procesarlos:
find . -name "*.php" -type f -exec sh -c "cat /path/to/sourcefile >> {}" \;
El comando find
identifica qué archivos utilizando condiciones como -name
y -type
, a continuación, los -exec
comando se ejecuta básicamente la misma cosa que se mostraron en el anterior "en bucle. El \;
final indica a find
que este es el final de los argumentos de la opción -exec
.
Puedes man find
para obtener más detalles al respecto.
El comando find
es portátil y, en general, se recomienda para este tipo de actividad, especialmente si desea que su solución sea portátil para otros sistemas. Pero desde que está utilizando actualmente bash
, también puede ser capaz de manejar los subdirectorios utilizando la opción de fiesta globstar
:
shopt -s globstar
for filename in **/*.php; do
cat /path/to/sourcefile >> $filename
done
Puede man bash
y busque "Globstar" para más detalles sobre esto.
NOTA: Es posible que tenga otros problemas con lo que está haciendo. Las secuencias de comandos PHP no necesitan para terminar con ?>
, por lo que puede estar agregando HTML que la secuencia de comandos intentará interpretar como código PHP.
¿Qué pasa con los archivos en los subdirectorios? Necesito anexarlo también. PD: utiliza el comando ' para i en $ a hacer echo "el código" >> $ i done' Pero en todos los archivos que añade dos veces y no pasó nada a los archivos en los subdirectorios. –
El comando "buscar" es mejor para los subdirectorios. – Graham
Para la cita de ejemplo bash '$ i' para manejar archivos con espacios en ellos para –