Remove o trailing ~ dos arquivos [closed]

0

Eu tenho uma lista de arquivos que terminam com ~

Eu os encontro com

find /var/www/vhosts/domain.com/httpdocs/ -type f -name "*.*~"

Como posso eliminar esse ~

    
por oussemos 07.05.2015 / 13:10

3 respostas

1
find /var/www/vhosts/domain.com/httpdocs/ -type f -name '*.*~' \
    -exec sh -c 'for arg do mv -- "$arg" "${arg%\~}"; done' _ {} +
  • A passagem de _ primeiro define $0 a _ , o que, de outra forma, teria obtido seu primeiro nome de arquivo.
  • Usar + em vez de ; diz find para passar tantos nomes de arquivos quanto possível para um único comando, em vez de executar um novo shell para cada arquivo.
por 07.05.2015 / 13:15
1

Você pode usar rename :

find /var/www/vhosts/domain.com/httpdocs/ -type f -name "*.*~" -exec rename 's/~$//' {} \;
    
por 07.05.2015 / 13:21
1

Minha solução é um script simples:

#!/bin/bash

for file in "$(find /var/www/vhosts/domain.com/httpdocs/ -type f -name '*.*~')"
do
    mv "$file" "$(echo $file | sed -e 's/~//g')"
done
    
por 07.05.2015 / 13:46

Tags