He intentado escribir un script que tomará el directorio de trabajo actual, analizará todos los archivos y comprobará si se trata de un archivo .txt. Luego tome cada archivo (que es un archivo de texto), y verifique si contiene un guión bajo en su nombre y si lo hace para cambiar el guión bajo a guión.Cambiar el nombre de los archivos en un directorio UNIX - shell scripting
Sé que esta es una tarea difícil, pero aquí está el código en bruto que tengo hasta ahora:
#!/bin/bash
count=1
while((count <= $#))
do
case $count in
"*.txt") sed 's/_/-' $count
esac
((count++))
done
lo que estaba pensando es que esto llevaría a los archivos en el directorio de trabajo actual como los argumentos y verifique cada archivo (representado por $ count o el archivo en "count"). Luego, para cada archivo, verificaría si terminara en .txt y si lo hiciera cambiaría cada guión bajo a un guión usando sed. Creo que uno de los principales problemas que tengo es que el script no lee los archivos del directorio de trabajo actual. Intenté incluir el directorio después del comando para ejecutar el script, pero creo que tomó cada línea en lugar de cada archivo (ya que hay 4 o más archivos en cada línea).
De todos modos, cualquier ayuda sería muy apreciada! Además, lamento que mi código sea tan malo, soy muy nuevo en UNIX.
Un problema es que '$ count' es el valor de la variable' count', que es un entero. Si desea iterar sobre los parámetros posicionales, debe escribir: 'para el archivo en" $ @ "; do ... 'o la abreviatura' para el archivo; do ... ' –
compruebe aquí: http: //theunixshell.blogspot.com/2013/01/bulk-renaming-of-files-in-unix.html – Vijay