bash - rimuove tutte le directory (e i contenuti) ma non i file in pwd


19

Vorrei rimuovere tutte le directory dal pwd ma lasciare solo i file nel pwd. Se il contenuto del mio pwd è:

mydir1
mydir2
myfile1
myfile2

allora vorrei essere lasciato solo

myfile1
myfile2

Presumo che devo usare rm -r -i

Ho ragione?

Risposte:


10

No che ti darebbe "operando mancante" poiché non hai specificato nulla. Mettere un *richiederebbe anche i file.

Proverei a:

find -mindepth 1 -maxdepth 1 -type d -exec rm -r {} \;

La mindepth 1si esclude .dai risultati, la maxdepth 1si esclude cercando di fare nelle directory che comunque vengono eliminati (creando così un avvertimento). Ma in pratica potresti lasciarli entrambi fuori se accetti di avere qualche avvertimento "innocente".


21

L'ho trovato da qualche parte:

rm -r */

Sembra il modo più semplice per andare. Con il tuo esempio, dovresti confermare ogni caso, se hai 5 file è OK, ma con strutture di file più grandi una modalità interattiva non è la strada da percorrere ... Proprio come un suggerimento, se sono informazioni importanti, crea un di backup ...


1
Seguiranno anche collegamenti simbolici, che molto probabilmente qui non sono desiderati.
JdeBP,

8

Uso

rm -rf ./*/

Ciò evita la modalità interattiva e cancella solo le directory nella directory locale.


Come ha sottolineato JdeBP sulla risposta molto simile di Martin , se la directory corrente (di livello superiore) contiene collegamenti simbolici ad altre directory, verranno anche eliminati (anche se non si trovano o sono subordinati alla directory corrente).
Scott,

3

Qualcosa del genere dovrebbe funzionare:

find /path -type d -exec rm -rf '{}' \;

-type d cerca solo directory


-1
you can also try in this way to delete only all folders not files from any location in linux.

    #delete only all dir and don't touch files
    #!/bin/bash
    for dir in `ls -l | grep ^d | awk '{print $9}'`
    do
    echo "going to delete $dir " `rm -rf $dir`
    done
    ls
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.