
Estoy intentando insertar el resultado de un comando en la primera línea de un archivo.
Por ejemplo, tengo un archivo llamado "list.txt" y quiero insertar un texto que contenga todos los nombres de los archivos en esa carpeta. Una forma de dirigir la salida del ls
comando a la primera línea de list.txt.
Respuesta1
La mayoría de la gente conoce sed como una herramienta de búsqueda y búsqueda y reemplazo basada en expresiones regulares, pero es un editor completo capaz de realizar ediciones.
Entonces podrías emitir un comando como este. Que insertaría ( 1 i
) la primera línea del comando ls $(ls| head -1)
en el list.txt
archivoen su lugar( -i
).
sed -i "1 i$(ls| head -1)" list.txt
Respuesta2
No existe una forma nativa de redirigir a la primera línea de un archivo, pero de todos modos puedes usar un archivo temporal para lograrlo. Por ejemplo, primero agregue el resultado a list2.txt
, luego ingrese list.txt
en él y escriba el resultado completo nuevamente en list.txt
:
ls > list2.txt
cat list.txt >> list2.txt
mv list2.txt list.txt
De esa manera deberías terminar con lo que estás buscando.
Respuesta3
Probablemente haya una forma más elegante de hacer esto, pero podrías usar varios archivos. Por ejemplo:
ls | head -n 1 > temp-list.txt
cat list.txt >> temp-list.txt
mv temp-list.txt list.txt