In una vecchia versione di Unix, il rmcomando avrebbe eliminato le directory se fossero vuote. Dalla pagina man di Research Unix Ottava Edizione per rm : "Se una voce è una directory, viene rimossa solo se vuota." Mi piace questo comportamento, quindi ho questo alias nel mio /etc/profile: alias rm='rm -d'sto usando la versione GNU coreutils di rm, in cui -ddice rmdi andare avanti e rimuovere le directory se sono vuote.
Fin qui tutto bene. Questo alias mi permette di usare rmcome ai vecchi tempi. Tuttavia, vorrei fare un ulteriore passo avanti. Mi piacerebbermper eliminare una directory anche se la directory contiene altre directory, purché le directory siano l'unica cosa presente. Non importa quanto sia profonda la struttura della directory, finché non ci sono file lì dentro, solo le directory vuote (una volta arrivate in fondo), vorrei rmrimuoverle tutte.
Potrebbe essere scritto come un alias che funzionerebbe comunque come normale rmed eliminerebbe qualsiasi file passato ad esso?
mkdir -p a/b1/c2 && mkdir -p a/b2/c2; rmdir -p a/b1/c1;, rimango ancora con a, a / b2 e a / b2 / c2. Quello che mi piacerebbe è passare solo al livello superiore (a in questo caso) rme rimuovere tutto al di sotto di esso.
rmdir -p?