O comando remove rm não funciona com curingas no Mac OS X

O comando remove rm não funciona com curingas no Mac OS X

Estou tentando remover o arquivo abaixo de todas as contas de usuário por meio de um script bash, mas o curinga * parece não funcionar. Tenho testado o script localmente, executando-o no terminal Mac OS X.

Arquivo Plist a ser excluído: com.apple.eap.bindings.XXXXXXX.plist

#!/bin/bash

for dir in /Users/*;
do
    if [[ -e "${dir}/Library/Preferences/com.apple.eap.bindings.*" ]]; then
        rm "${dir}/Library/Preferences/com.apple.eap.bindings.*"
    fi
done

O código acima não exclui o arquivo em questão, mas funciona se eu apontar para o nome exato do arquivo sem o curinga. Eu tentei remover aspas também, mas ainda não excluí o arquivo. Alguém poderia ajudar, por favor?

Responder1

if [[ -e "${dir}/Library/Preferences/com.apple.eap.bindings.*" ]]; then

Nesta linha você coloca o asterisco entre aspas duplas. Isso o torna um caractere literal e não algo que se expande magicamente para nomes de arquivos.

Links:aspas duplas vs-asterisco-nome do arquivo-expansão-no-bashassim comoa postagem já apontada por Shaun.

Você terá que usar o asterisco sem aspas. Seja como na primeira parte do seu roteiro ou como argumento parafind.

Responder2

Você poderia considerar isso como uma alternativa

#!/bin/bash
/usr/bin/find /Users/*/Library/Preferences -name "com.apple.eap.bindings.*.plist" -exec /bin/rm -fv "{}" \;

Isso removerá efetivamente os arquivos em questão. Remova a opção 'v' se não quiser saída.

Responder3

Se isso ajudar alguém, é isso que funciona para mim:

#!/bin/bash

for dir in /Users/*;
do
    if [ -z "$(echo ${dir}/Library/Preferences/com.apple.eap.bindings.*|grep -q '*')" ]; then
        rm ${dir}/Library/Preferences/com.apple.eap.bindings.*
    fi
done

informação relacionada