Renomeie todos os arquivos .txt dentro de subpastas com “find”

3

Eu quero renomear todos os arquivos .txt dentro de uma pasta. Essa renomeação renomeia todos os .txt para mim:

rename 's/\.txt//g' *.txt -v

mas quando quero renomear todas as subpastas com

find ./ -type d -execdir rename 's/\.txt//g' *.txt -v ";"

Isso me mostra:

Can't rename *.txt *: No such file or directory
Can't rename *.txt *: No such file or directory
...

Além disso, o find ./ -type -d mostra todas as subpastas atuais e atuais.

Por que eu tenho No such file or directory mensagem?

    
por ICE 04.01.2017 / 17:10

1 resposta

5

Você precisa usar a sintaxe find do -exec corretamente, usando '{}' para representar os arquivos encontrados

find ./ -type d -name '*.txt' -execdir rename -n 's/\.txt//g' '{}' \;

Remova -n após rename depois de testá-lo.

(supondo que você realmente queira alterar nomes de diretórios e não nomes de arquivos regulares - se for esse o caso, use -type f em vez de type -d )

    
por Zanna 04.01.2017 / 17:14