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