Substituir ocorrências de caracteres em nomes de arquivos [duplicados]

0

Como posso substituir todas as ocorrências do caractere + em todos os nomes de arquivos no diretório de trabalho atual pelo caractere de espaço?

Eu sei que existe o comando do linux rename , mas não sei como usá-lo para fazer isso.

Exemplo:

Primeiros + cristãos - > Cristãos Primitivos

    
por Apollo 02.12.2014 / 05:00

3 respostas

2

Você também pode usar mv para renomear arquivos. Copie e cole no terminal ou transforme-o em um script:

for f in *; do
    # check if its a file
    if [[ -f "$f" ]]; then
        new_name=$(echo "$f" | sed 's/+/ /g')
        # replace this echo with mv
        echo "$f" "$new_name"
    fi
done

Substitua o segundo echo por mv se você estiver satisfeito com os resultados. Como ele irá renomear todos os arquivos no diretório em que o loop é executado.

    
por 02.12.2014 / 05:14
2

Tente:

rename -n 'y/+/ /' *

y é usado para traduzir caracteres de um conjunto para outro. Considere o exemplo de man rename :

To translate uppercase names to lower, you'd use
       rename 'y/A-Z/a-z/' *

O -n é usado para testar a expressão. Quando estiver satisfeito com os resultados, execute rename sem ele para executar a renomeação real.

Devo mencionar que o rename do qual estou falando é perl-rename , conhecido como prename (e disponível como rename ) em distribuições Linux baseadas no Debian, o mesmo comando visto em ntzrmtthihu777's answer .

    
por 02.12.2014 / 05:23
0

Pessoalmente, adoro usar perl-rename para essas tarefas. Por exemplo, eu usaria perl-rename 's:_: :g' file_name_here para alterar todos os sublinhados para espaços, resultando em file name here . Você pode pensar nisso como uma coisa de renomear sed:)

    
por 02.12.2014 / 05:52

Tags