4 votos

Agregar texto a la lista de archivos

Estoy tratando de utilizar xargs para manipular un conjunto de archivos.

Un archivo llamado filelist.txt contienen los nombres de archivo

john 
paul 
george
ringo
steve 

Puedo crear estos archivos con este comando:

cat filelist.txt | xargs touch

¿Cómo puedo agregar el mismo texto "hola" a todos los archivos de la lista? También, ¿cómo puedo agregar texto basado en el nombre del archivo.. es decir, 'nombre: steve', a la que steve archivo?

4voto

Brian Surowiec Puntos 189

Anexar hello a cada archivo:

cat filelist.txt | while read line; do echo hello >> $line; done

Anexar el nombre de archivo para cada archivo:

cat filelist.txt | while read line; do echo $line >> $line; done

1voto

cannyboy Puntos 24

He marcado @steven como correcta porque es tal vez más fácil de leer, pero tenía curiosidad acerca de una solución que utiliza xargs. Esto es lo que he encontrado:

cat filelist.txt | xargs -I $0 sh -c "echo 'hello' > $0"
cat filelist.txt | xargs -I $0 sh -c "echo 'hello $0' > $0"

El -I $0 significa reemplazar $0 en la próxima cadena. Usted podría utilizar algo más legible como $NAME o person_name etc. sh -c realiza el comando en una cadena. No sé por qué esto es necesario.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: