Assim?
for f in *.cut *.cut.bak
do
[ -e "$f" ] || continue
f="${f%%.bak}"
f="${f%%.cut}"
[ -e "$f".mpg ] || [ -e "$f".rec ] || rm -i -- "$f".cut "$f".cut.bak
done
Meu objetivo é encontrar uma sequência de comandos do Linux, que exclua alguns arquivos se uma condição especial for cumprida:
Todos os arquivos com as extensões .cut
ou .cut.bak
no diretório atual devem ser removidos, SE não houver arquivo com o mesmo nome, mas a extensão .rec
ou .mpg
no diretório atual.
Antecedentes: Estou desenvolvendo uma ferramenta para um PVR baseado em Linux, que permite o corte de programas gravados. Para cada gravação (extensão .rec
ou .mpg
), os marcadores de segmento são armazenados em um arquivo .cut
com o mesmo nome. Quando alguma gravação é movida / renomeada / apagada, o arquivo correspondente permanece órfão e deve ser excluído. Eu já implementei a remoção desses arquivos cortados inúteis em C. Mas eu estou pensando, se pode haver uma solução baseada em um sistema (simples). Neste caso, poderia ser executado via 'system' e & em segundo plano, o que tornaria meu aplicativo mais responsivo ...
Já fiz uma pergunta semelhante para o caso recursivo (navegando também em subdiretórios), aqui . Houve uma resposta (quase) perfeita pelo kos - mas infelizmente ele remove muitos arquivos, então não é utilizável, e eu não consegui descobrir ... Mas a mesma ideia pode ser usada aqui, se for possível analisar e canalizar o resultado de 'ls' linewise ...