Dado que el rename
comando no funcionó para mí por razones desconocidas y no obtengo ninguna otra respuesta para mi pregunta, intenté hacer un esfuerzo para hacer posible el cambio de nombre. Puede que este no sea el mejor enfoque para cambiar el nombre de los archivos, pero funcionó para mí y es por eso que me gustaría publicarlo como respuesta para que, si alguien más lo lee, pueda obtener ayuda para cambiar los nombres de los archivos de la manera que lo hice.
Ahora, para mí, sé que todos los archivos tendrán un texto específico en sus nombres, que es la palabra "Bloquear". Los siguientes son los nombres de archivo antes de que se realizara el cambio de nombre:
anks@anks:~/anks$ ls -lrt
total 4
-rw-r--r-- 1 anks anks 0 Jul 25 14:47 Bharti TRX Block Report$AP@12Jul15.csv
-rw-r--r-- 1 anks anks 0 Jul 25 14:47 Bharti TRX Block Report$HP@12Jul15.csv
-rw-r--r-- 1 anks anks 0 Jul 25 14:47 Bharti TRX Block Report$CH@12Jul15.csv
-rw-r--r-- 1 anks anks 0 Jul 25 14:47 Bharti TRX Block Report$KK@12Jul15.csv
-rw-r--r-- 1 anks anks 0 Jul 25 14:48 Bharti TRX Block Report$UW@12Jul15.csv
Ahora he escrito un pequeño script de shell para hacer esto posible. El siguiente es el código:
#!/bin/bash
PATH="/home/ebfijjk/anks"
# Put the old filenames in a file.
ls $PATH | grep Block >> oldValues
# Put the new names without " " or "@" or "$" in another file
cat oldValues | sed 's/\$/_/g' | sed 's/\@/_/g' | sed 's/ /_/g' >> newValues
# Create a new file with Old names and New names seperated by a #.
paste -d'#' oldValues newValues >> oldAndNew
# Read the file with both old and new names and rename them with the new names.
while IFS='#'; read oldValue newValue
do
mv "$oldValue" "$newValue"
done < oldAndNew
rm oldValues newValues oldandNew
Y eso es todo, cuando ejecuto el script, cambia el nombre de todos los nombres de archivos que tienen espacios en blanco (
) $
o @
con o en _
lugar de estos caracteres.