Como excluo o diretório e o arquivo, se o .picasa.ini é o único arquivo no diretório?

0

Eu quero começar de um diretório raiz e recursar pela árvore. Desejo excluir o diretório e o arquivo se houver apenas um arquivo no diretório chamado .picasa.ini

Parece que o comando "find" pode fazer muitas pesquisas complexas, mas não sei se posso executar ações com base nesse tipo de condição.

Estou usando uma máquina Windows, mas tenho acesso ao cygwin que fornece muitas ferramentas de linha de comando.

    
por Sun 24.09.2014 / 23:04

1 resposta

1

Não tenho certeza se isso pode ser feito com um único comando find , mas certamente isso pode ser feito com um simples script bash. Acabei de testar isso no Cygwin e funciona como pretendido. Você desejará alterar ROOT_DIR para ser a raiz de qualquer sistema de arquivos no qual você deseja executar essa pesquisa (por exemplo, /cygdrive/d/ para pesquisar na unidade D).

A idéia geral é a seguinte: encontre todos os arquivos chamados .picasa.ini na árvore. Para cada um, procure em seu diretório para ver se há outros arquivos. Se não houver, remova o diretório. (As aspas duplas em torno de $dir removerão diretórios que contêm espaços). Caso contrário, siga em frente.

#!/bin/bash

ROOT_DIR=/

find "$ROOT_DIR" -type f -name '.picasa.ini' | while read file; do
    dir=$(dirname "$file")
    filecount=$(ls -1A "$dir" | wc -l)
    if (( filecount == 1 )); then
            rm -rv "$dir"
    fi
done

Espero que isso ajude! Estarei interessado em ver se alguém tem uma solução mais elegante.

    
por 25.09.2014 / 02:44

Tags