¿Cómo eliminar todas las líneas nuevas de todos los archivos .txt de una carpeta, utilizando herramientas UNIX?
Tengo alrededor de 300 archivos (.txt) en una carpeta con texto normal formateado con /n’s. Quiero que todo el texto de estos archivos esté en la primera línea, ya que un programa en mi canalización lo requiere.
Ejemplo:
(IS:)\
GTCGCAGCCG\
TCGGCTCGGA\
TCTCGGCCTC
(DEBERÍA SER:)\
GTCGCAGCCGTCGGCTCGGATCTCGGCCTC
Si pudiera sobrescribirlos todos, manteniendo los nombres de archivo sin cambios, eso sería conveniente. No quiero sacar python todavía, ¿hay una herramienta / enfoque fácil de línea de comando UNIX?
Estuve aquí antes:
https://stackoverflow.com/questions/3134791/how-do-i-remove-newlines-from-a-text-file
Pero, ¿cómo hacer eso para los 300 archivos en mi carpeta? Si uso tr -d '\n' < *.txt
me dice: “bash: *.txt: redirección ambigua”.
davy.ai
Para eliminar los saltos de línea de los 300 archivos .txt en una carpeta utilizando un enfoque de línea de comandos, se puede utilizar una combinación de los comandos
find
yxargs
con el comandotr
.Aquí hay un ejemplo de comando:
Veamos cómo se descompone:
find /ruta/a/la/carpeta -name "*.txt" -type f -print0
– esto encuentra todos los archivos en la carpeta especificada con la extensión.txt
y muestra sus nombres, separados por caracteres nulos.| xargs -0 -I{}
– esto toma la salida del comando anterior, que está separada por caracteres nulos, y pasa cada nombre de archivo como argumento al siguiente comando.sh -c 'tr -d "\n" < "$1" > temp && mv temp "$1"' -- {}
– esto crea un comando shell que toma el nombre del archivo como argumento ($1
). Utiliza el comandotr
para eliminar los saltos de línea del contenido del archivo y escribe la salida en un archivo temporal llamadotemp
. Luego, cambia el nombre del archivo temporal al nombre original del archivo, sobrescribiendo efectivamente el archivo original.Tenga en cuenta que la opción
--
indica axargs
que trate todos los argumentos restantes como nombres de archivo, incluso si comienzan con un guión.Este comando debería funcionar con nombres de archivo que contengan espacios, caracteres especiales o saltos de línea.