O seguinte deve fazer o que você está perguntando:
#!/bin/bash
sz="gom"
dir="/where/the/files/are"
find $dir -type f -name "*${sz}*" -print0 | while read -d '' -r c; do
if [[ -f "$(echo $c | sed 's/'"${sz}"'//g')" ]]; then
# Strip the 'echo' to have this actually do things
echo rm -v "$c"
fi
done
Algumas notas sobre as alterações e correções:
- O
-printf "%f\n"
de Find é preferível a-exec basename {} \;
. Neste caso eu removi o find stripping do dirname para que o script seja seguro para estruturas de diretório não-planas. -
for c in ossz
nunca deveria ter funcionado - o nome de barraossz
não é uma variável.$ossz
teria sido necessário. - O uso de
sed
é provavelmente preferível a confiar na correspondência e na substituição do padrão bash por motivos de legibilidade.
Exemplo:
Para um diretório contendo os seguintes arquivos:
alb alba algomb algomba gomb
O script acima gerará o seguinte:
rm -v ./algomb
rm -v ./algomba