Como o rename
comando não funcionou para mim por motivos desconhecidos e não recebo outras respostas para minha pergunta, tentei fazer um esforço para tornar a renomeação possível. Essa pode não ser a melhor abordagem para renomear os arquivos, mas funcionou para mim e é por isso que eu gostaria de publicá-la como resposta, para que, se alguém mais ler isso, obtenha ajuda para alterar os nomes dos arquivos da maneira que eu fiz.
Agora, para mim, eu sei que todos os arquivos terão um texto específico em seus nomes, que é a palavra "Bloquear". A seguir, estão os nomes dos arquivos antes de sua renomeação ser concluída:
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
Agora eu escrevi um pequeno script de shell para tornar isso possível. A seguir está o 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
E é isso, quando executo o script, ele renomeia todos os nomes de arquivos com espaços em branco (
) ou $
ou @
com _
esses caracteres.