Bash, como renomear arquivos em várias pastas de um script?

0

Eu tenho um script shell / bash que irá renomear alguns arquivos dentro de sua pasta. Eu tenho esse mesmo arquivo em várias pastas. Eu gostaria de ter um arquivo que faça todas as pastas.

#!/bin/bash
for name in *.png; do
    # remove everything after the last '-' including the dash
    # and add the '.png' extension back
    newname="${name%-*}.png"
    mv "$name" "$newname"
done
    
por Jules 01.01.2018 / 19:20

1 resposta

2

Se você quiser apenas aprofundar um diretório, não precisará recursionar e não precisará cd :

Esta modificação permite ao seu script obter uma lista de diretórios como argumentos e renomear os arquivos .png nesses diretórios.

#!/bin/bash
for dir in "$@"; do
    for name in "$dir"/*.png; do
        # . . .
    done
done

O "$@" se expande para os argumentos da linha de comando do script. O script silenciosamente não fará nada sem argumentos.

Os argumentos do nome do diretório podem ser qualquer caminho absoluto ( /path/to/dirx ) ou caminho relativo ( dirx , path/to/diry , . , .. , ../x/d1 , etc).

    
por 04.01.2018 / 08:19

Tags