Come può essere rimossa la stessa sottodirectory da diverse directory madri?


1

Supponendo la seguente struttura di file:

/Parent1/
/Parent1/SubA/
/Parent1/SubB/
  ...
/Parent2/
/Parent2/SubA/
/Parent2/SubB/
  ...

quale comando posso usare per rimuovere ricorsivamente SubB da ciascuna directory principale? Quello che ho fatto è di lunga data (molto schifoso, ma lo includerò solo così è chiaro quello che sto cercando di fare):

rm -rf Parent1/SubB
^1^2^
...

Risposte:


2

È possibile ottenere questo utilizzando il find e xargs comandi. Diciamo parent1 e parent2 sono entrambi memorizzati in una directory denominata SuperParent . Potresti fare qualcosa sulla falsariga di:

find /SuperParent -name SubB -type d -print0 | xargs -0 rm -rf

Questo sistema un elenco di directory denominate SubB trovate di seguito / SuperParent in xargs comando, che prende ogni directory ed esegue rm con la directory come argomento.


1
correre find /SuperParent -name SubB -type d | xargs echo rm -rf per prima cosa fai eco a ciò che verrebbe eseguito, se sei preoccupato. Inoltre, se hai troppe directory, potresti ricevere un errore, quindi dovresti farlo find /SuperParent -name SubB -type d | xargs -i rm -rf {} (che esegue ogni comando rm uno alla volta)
Roy Rico

1
Questo ha funzionato quasi per quello di cui avevo bisogno e mi ha mandato sulla strada giusta. L'unico problema che posso vedere è che se esiste una directory denominata SubB che è figlio di SubA, (o di un fratello di Parent1) e non si desidera eliminare tale directory. Qualificarsi con code find / SuperParent -mindepth 2 -maxdepth 2 -name SubB -type d | xargs rm -rf code sembra che si prenderà cura di questo problema. Grazie per la tua risposta!
process91

Ah, questo è un buon punto. Bella soluzione!
3498DB

1

Se non ci sono troppi genitori:

rm -rf Parent*/SubB

Wow, questo ha funzionato davvero! Ed è così semplice e facile da ricordare! Grazie!
process91

@ slhck Funziona per me se i nomi dei file contengono degli spazi. Si prega di fornire un esempio in cui non funziona.
Ole Tange

Oh, sono corretto. Non so perché questo è stato comunque svalutato.
slhck
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.