Isso funcionou para mim:
while read -r i;
do
old_file=${i%%(*}
rm $old_file
mv "$i" "$old_file"
done <<< "$(find | grep "2013-03-17)$")"
Antes:
./files/filename2 (Johns in Konflikt stehende Kopie 2013-03-17)
./files/filename2
./files/filename (Johns in Konflikt stehende Kopie 2013-03-17)
./files/filename
./files/subfolder/filename (Johns in Konflikt stehende Kopie 2013-03-17)
./files/subfolder/filename
Depois:
./files/filename
./files/filename2
./files/subfolder/filename
Faça um backup dos seus arquivos por precaução.
Explicação:
while read -r i; <<< "$(find | grep "2013-03-17)$")" lê todas as linhas da saída desse comando, que retorna path/filename para todos os arquivos terminados em 2013-03-17) - você pode precisar adicionar a extensão do arquivo ou obter apenas o nome de arquivo .
old_file=${i%%(*} define old_file como tudo na sequência produzida pelo comando find , ou seja, filename (Johns in Konflikt stehende Kopie 2013-03-17) e todos os outros, como todos antes de ( , ou seja, filename .
rm $old_file remove os arquivos antigos, ou seja, todos os nomes filename e filename2
mv "$i" "$old_file" renames filename (Johns in Konflikt stehende Kopie 2013-03-17) para filename