Renomear diretórios deixando todos em maiúsculo [RESOLVIDO]

1. Renomear diretórios deixando todos em maiúsculo [RESOLVIDO]

Daniel Moreira
danielmoreira5

(usa CentOS)

Enviado em 06/08/2016 - 15:29h

Boa tarde pessoal,

Solicito ajuda no seguinte problema: Trabalho em uma empresa de TI onde migramos um servidor de arquivos de windows para linux, ai começam os problemas, no windows as pastas estão criadas sem uma lógica digamos com nome "Pasta, ou PASTA" e outras "Pasta de Arquivos" enfim com espaços e algumas letras em minusculo outras em maiúsculas. Na aplicação web que eles usam ao mandar abrir um documento cadastrado na aplicação ela lê o um campo na base de dados que tem o caminho do arquivo eletrônico, como o Linux é case sensitivo ocorre erro que não encontra o arquivo físico. Com isto o que eu ja fiz foi na base de dados ajustar todo o caminho para letras maiúsculas e substituí as pastas que tinha espaço por um _ exemplo; Pasta com espaço ficou agora PASTA_COM_ESPAÇO. Meu problema agora está em ajustar o caminho físico delas no HD deixando todas em maiúsculo e trocando espaços por _ , encontrei algumas opções porem elas também alteram nome de arquivos e eu precisava dar um UP apenas nos diretórios, o que eu quero é digamos entrar no diretório raiz e a partir dele deixa todos os diretórios e sub-diretórios com letra maiúsculas e os que tem espaço trocar por _, alguém ai tem uma dica de ouro?

Obrigado desde já.


  


2. MELHOR RESPOSTA

Claudio Ricardo
Claudio.

(usa Slackware)

Enviado em 06/08/2016 - 23:44h

tente o seguinte, escreva esse script e dê permissão de execução:
touch fix-names
chmod +x
nano fix-names

#!/usr/bin/perl
# Script escrito pelo saudoso Larry Wall
$op = shift or die $help;
chomp(@ARGV = <STDIN>) unless @ARGV;
for (@ARGV) {
$was = $_;
eval $op;
die $@ if $@;
rename($was,$_) unless $was eq $_;
}


faça dele um comando e execute dentro do diretório da seguinte forma:
sudo mv fix-names /usr/bin
cd "diretório"
find | fix-names 'tr/a-z/A-Z/'

O mesmo vale pra mudar para lower case.

danielmoreira5 escreveu:

Claudio ele renomeou para maiúsculas apenas dentro do diretório de onde rodei o comando, e não renomeou as letras com acento ou ç ex: ã, õ ó, ê ç


Isso porque você não percebeu a completa utilidade do script, ele substitui qualquer coisa num nome, inclusive caracteres especiais (mas caracteres especiais não estão no alfabeto, eu acho), por exemplo, espaços nos nomes não são muito legais pra ficar digitando, sempre é necessário escrever o nome como 'nome', tente isso:
find | fix-names 'tr/ /_/' 

percebe o que aconteceu? Agora, pra deixar sua vida mais fácil ainda, escreva o seguinte script com o nome do-upper (ou qualquer nome que você gostar):
#!/bin/sh
if [ $# -lt 1 ]; then
exit 1
fi
find $1 | fix-names 'tr/ /_/'
find $1 | fix-names 'tr/a-z/A-Z/'
find $1 | fix-names 'tr/ç/Ç/'
find $1 | fix-names 'tr/á/Á/'
find $1 | fix-names 'tr/à/À/'
find $1 | fix-names 'tr/â/Â/'
find $1 | fix-names 'tr/é/É/'
find $1 | fix-names 'tr/ê/Ê/'
find $1 | fix-names 'tr/í/Í/'
find $1 | fix-names 'tr/ó/Ó/'
find $1 | fix-names 'tr/ô/Ô/'
find $1 | fix-names 'tr/õ/Õ/'
find $1 | fix-names 'tr/ú/Ú/'
find $1 | fix-names 'tr/û/Û/'


agora copie para sua /usr/bin, para executar faça:
do-upper /diretório/que/você/quer/ 

ou mesmo pra mudar apenas um arquivo faça:
do-upper arquivo 

pra fazer um script 'do-lower' é só inverter.

Mas você é administrador de sistemas, saber lidar com texto é necessário, aprenda como fazer shell scripts e como programar com awk e sed, aí você poderá fazer one liners como do nosso amigo marcelo, que são extremamente úteis. Caso queira ainda mais, aprenda perl.

3. Re: Renomear diretórios deixando todos em maiúsculo [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 06/08/2016 - 16:58h

danielmoreira5 escreveu:

Boa tarde pessoal,

Solicito ajuda no seguinte problema: Trabalho em uma empresa de TI onde migramos um servidor de arquivos de windows para linux, ai começam os problemas, no windows as pastas estão criadas sem uma lógica digamos com nome "Pasta, ou PASTA" e outras "Pasta de Arquivos" enfim com espaços e algumas letras em minusculo outras em maiúsculas. Na aplicação web que eles usam ao mandar abrir um documento cadastrado na aplicação ela lê o um campo na base de dados que tem o caminho do arquivo eletrônico, como o Linux é case sensitivo ocorre erro que não encontra o arquivo físico. Com isto o que eu ja fiz foi na base de dados ajustar todo o caminho para letras maiúsculas e substituí as pastas que tinha espaço por um _ exemplo; Pasta com espaço ficou agora PASTA_COM_ESPAÇO. Meu problema agora está em ajustar o caminho físico delas no HD deixando todas em maiúsculo e trocando espaços por _ , encontrei algumas opções porem elas também alteram nome de arquivos e eu precisava dar um UP apenas nos diretórios, o que eu quero é digamos entrar no diretório raiz e a partir dele deixa todos os diretórios e sub-diretórios com letra maiúsculas e os que tem espaço trocar por _, alguém ai tem uma dica de ouro?
Obrigado desde já.


Boa tarde danielmoreira5.
Segue uma sugestão:

for DIR in $(ls -l|awk -F" " '/^d/ {print $9}');do
rename 's/(.*)/\L$&/' "$DIR"
done


Obs.: SE a RESPOSTA foi ÚTIL e lhe AJUDOU, retribua, marcando-a como A MELHOR . . .

att.:
Marcelo Oliver




4. Re: Renomear diretórios deixando todos em maiúsculo [RESOLVIDO]

Daniel Moreira
danielmoreira5

(usa CentOS)

Enviado em 06/08/2016 - 20:05h

msoliver escreveu:

danielmoreira5 escreveu:

Boa tarde pessoal,

Solicito ajuda no seguinte problema: Trabalho em uma empresa de TI onde migramos um servidor de arquivos de windows para linux, ai começam os problemas, no windows as pastas estão criadas sem uma lógica digamos com nome "Pasta, ou PASTA" e outras "Pasta de Arquivos" enfim com espaços e algumas letras em minusculo outras em maiúsculas. Na aplicação web que eles usam ao mandar abrir um documento cadastrado na aplicação ela lê o um campo na base de dados que tem o caminho do arquivo eletrônico, como o Linux é case sensitivo ocorre erro que não encontra o arquivo físico. Com isto o que eu ja fiz foi na base de dados ajustar todo o caminho para letras maiúsculas e substituí as pastas que tinha espaço por um _ exemplo; Pasta com espaço ficou agora PASTA_COM_ESPAÇO. Meu problema agora está em ajustar o caminho físico delas no HD deixando todas em maiúsculo e trocando espaços por _ , encontrei algumas opções porem elas também alteram nome de arquivos e eu precisava dar um UP apenas nos diretórios, o que eu quero é digamos entrar no diretório raiz e a partir dele deixa todos os diretórios e sub-diretórios com letra maiúsculas e os que tem espaço trocar por _, alguém ai tem uma dica de ouro?
Obrigado desde já.


Boa tarde danielmoreira5.
Segue uma sugestão:

for DIR in $(ls -l|awk -F" " '/^d/ {print $9}');do
rename 's/(.*)/\L$&/' "$DIR"
done


Obs.: SE a RESPOSTA foi ÚTIL e lhe AJUDOU, retribua, marcando-a como A MELHOR . . .

att.:
Marcelo Oliver





Daniel Moreira
Analista de Instalação

Este comando deu este erro:


rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).


5. Re: Renomear diretórios deixando todos em maiúsculo

Claudio Ricardo
Claudio.

(usa Slackware)

Enviado em 06/08/2016 - 20:51h

tente o seguinte, escreva esse script e dê permissão de execução:
touch fix-names
chmod +x
nano fix-names

#!/usr/bin/perl
# Script escrito pelo saudoso Larry Wall
$op = shift or die $help;
chomp(@ARGV = <STDIN>) unless @ARGV;
for (@ARGV) {
$was = $_;
eval $op;
die $@ if $@;
rename($was,$_) unless $was eq $_;
}


faça dele um comando e execute dentro do diretório da seguinte forma:
sudo mv fix-names /usr/bin
cd "diretório"
find | fix-names 'tr/a-z/A-Z/'

O mesmo vale pra mudar para lower case.


6. Re: Renomear diretórios deixando todos em maiúsculo [RESOLVIDO]

Daniel Moreira
danielmoreira5

(usa CentOS)

Enviado em 06/08/2016 - 21:18h

Claudio ele renomeou para maiúsculas apenas dentro do diretório de onde rodei o comando, e não renomeou as letras com acento ou ç ex: ã, õ ó, ê ç


7. Re: Renomear diretórios deixando todos em maiúsculo [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 06/08/2016 - 22:14h

danielmoreira5 escreveu:
Daniel Moreira
Analista de Instalação
Este comando deu este erro:
rename: not enough arguments
Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).


Testei novamente aqui . . . Funcionando.
cnvdd@debian:$ ls -l
total 24
drwxr-xr-x 2 cnvdd cnvdd 4096 Ago 6 22:08 DIR_00
drwxr-xr-x 2 cnvdd cnvdd 4096 Ago 6 22:08 DIR_01
drwxr-xr-x 2 cnvdd cnvdd 4096 Ago 6 22:08 DIR_02
drwxr-xr-x 2 cnvdd cnvdd 4096 Ago 6 22:08 DIR_03
drwxr-xr-x 2 cnvdd cnvdd 4096 Ago 6 22:08 DIR_04
drwxr-xr-x 2 cnvdd cnvdd 4096 Ago 6 22:08 DIR_05


cnvdd@debian:$ for DIR in $(ls -l|awk -F" " '/^d/ {print $9}');do
> rename 's/(.*)/\L$&/' "$DIR"
> done
cnvdd@debian:$ ls -l
total 24
drwxr-xr-x 2 cnvdd cnvdd 4096 Ago 6 22:08 dir_00
drwxr-xr-x 2 cnvdd cnvdd 4096 Ago 6 22:08 dir_01
drwxr-xr-x 2 cnvdd cnvdd 4096 Ago 6 22:08 dir_02
drwxr-xr-x 2 cnvdd cnvdd 4096 Ago 6 22:08 dir_03
drwxr-xr-x 2 cnvdd cnvdd 4096 Ago 6 22:08 dir_04
drwxr-xr-x 2 cnvdd cnvdd 4096 Ago 6 22:08 dir_05


Sr. "analista de instalação", reveja o comando, pois o mesmo funciona satisfatoriamente!!!!

Marcelo Oliver


8. Re: Renomear diretórios deixando todos em maiúsculo [RESOLVIDO]

Daniel Moreira
danielmoreira5

(usa CentOS)

Enviado em 06/08/2016 - 22:22h

Segue execução aqui também: Será que pode ser algo da distribuição? estou rodando em RHEL 7.

[root@xxxxxxx DOCUMENTOS]# ls -l
total 92
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 ADENDOS
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 ATAS
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 AVISOS
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 CADASTROS
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 CAPAS
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 CARTAS
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 CONTRATOS
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 DECLARAÇÕES
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 DEVOLUÇÕES
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 EDITAIS
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 FAX
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 HABILITAÇÃO
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 INDICES
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 INSTRUÇÕES_DE_TRABALHO
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 INSTRUÇÕES_NORMATIVAS
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 Nota Técnica
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 Orçamentos
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 Pareceres
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 Procedimento Documentado Corporativo
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 Propostas
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 Relatorios
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 Requisições
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 Termos

------------------------------------------------------------------------------------------------------

[root@elnbsbsrv21d DOCUMENTOS]# for DIR in $(ls -l|awk -F" " '/^d/ {print $9}');do
> rename 's/(.*)/\L$&/' "$DIR"
> done
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
rename: not enough arguments

Usage:
rename [options] expression replacement file...

Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target

-h, --help display this help and exit
-V, --version output version information and exit

For more details see rename(1).
[root@xxxxxx DOCUMENTOS]#




9. Re: Renomear diretórios deixando todos em maiúsculo

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 06/08/2016 - 22:39h

danielmoreira5 escreveu:

Segue execução aqui também: Será que pode ser algo da distribuição? estou rodando em RHEL 7.

[root@xxxxxxx DOCUMENTOS]# ls -l
total 92
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 ADENDOS
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 ATAS
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 AVISOS
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 CADASTROS
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 CAPAS
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 CARTAS
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 CONTRATOS
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 DECLARAÇÕES
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 DEVOLUÇÕES
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 EDITAIS
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 FAX
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 HABILITAÇÃO
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 INDICES
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 INSTRUÇÕES_DE_TRABALHO
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 INSTRUÇÕES_NORMATIVAS
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 Nota Técnica
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 Orçamentos
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 Pareceres
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 Procedimento Documentado Corporativo
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 Propostas
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 Relatorios
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 Requisições
drwxr-xr-x 4 gsis gsis 4096 Aug 3 11:55 Termos
------------------------------------------------------------------------------------------------------


Tenta desta forma:
rename -n 's/(.*)/\L$&/' *
OBS.:
"-n" Faz simulação, não altera

Marcelo



10. Re: Renomear diretórios deixando todos em maiúsculo [RESOLVIDO]

Daniel Moreira
danielmoreira5

(usa CentOS)

Enviado em 07/08/2016 - 01:22h

Maravilha consegui chegar ao que precisava obrigado pela ajuda de todos.

abraço !!!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts