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