Imagen de pwned
+1
+1
-1

@AllanPoe
Te da error por que usas el *.csv y la salida que genera es una línea con todos los archivo seguidos. Por eso cuando solo tienes un archivo no hay problema, pero si tienes más de uno se concatenan, por ejemplo: archivo1 archivo2 ...

@JAVIER NAVARRO
La idea esta bien planteada pero... unos pequeños consejos. Tu code solo iria bien si los nombres de los ficheros '.csv' estan sin espacios, en el momento en que un archivo tenga espacios te dará error al intentar hacer un 'cat' a un archivo desconocido.
Pensaras que con ponerle comillas a la variable "$i" que contiene el nombre del fichero se soluciona... NO.
Y a lo que quiero llegar, es un error muy común el usar `cmd` o $(cmd) en bucles for, pero esto NUNCA se debe hacer si se quiere trabajar con salidas de comando que impliquen nombres de ficheros o lineas de ficheros.
El bucle for tratará las salidas de los comandos como meras strings, no como la salida del comando "normal" y solo debe ser usado con expansiones. Por eso, por muchas comillas que pongas al hacer el 'cat' te seguirá dando error para archivos espaciados.

La forma correcta de hacerlo es así:

1 ls *.csv | while read -r line; do
2 cat "$line" | ...
3 done

Saludos.

+1
+1
-1
Imagen de JAVIER NAVARRO ALTIMIRA
+1
+1
-1

#!/bin/bash
#
# script para eliminar los brackets de archivos csv, se
# ha cambiado [:puntc:] para evitar el borrado de
# otros carácteres de puntuación que quizas no se
# quieran borrar
#
# listar todos los *.csv
for i in `ls *.csv`
do
# crear un nombre archivo temporal
temp=`tempfile`
# elimina los brackets y deposita el resultaod
# en el archivo temporal
cat $i | tr -d "[" | tr -d "]" > $temp
# mueve el temporal al archivo original
mv -v -f $temp $i
done

echo -n "Pulsa enter para salir . . . " && read

+1
+1
-1