dando un output grep a rm


47

Sto provando a reindirizzare l' grepoutput a rm, ma genera output inutili. È richiesto qualche interruttore rm? O può rmessere fornito direttamente un regexp?

ls | grep '^\[Daruchini'| rm

rm: operando mancante Prova `rm --help 'per maggiori informazioni.


Copia e incolla sempre i messaggi di errore. (Ho inserito l'effettivo messaggio di errore a beneficio dei futuri lettori. Ma ho potuto farlo solo perché in questo caso esiste un solo messaggio di errore. Il più delle volte, è fondamentale avere il messaggio di errore esatto per capire il problema Quindi copia e incolla sempre tutti i messaggi di errore per intero.
Gilles 'SO- smetti di essere malvagio'

Risposte:


57

È necessario utilizzare xargsper trasformare l'input standard in argomenti per rm.

$ ls | grep '^Dar' | xargs rm

(Attenzione ai caratteri speciali nei nomi dei file; con GNU grep, potresti preferire

$ ls | grep -Z '^Dar' | xargs -0 rm

)

Inoltre, mentre la shell non usa regexps, questo è un modello semplice:

$ rm Dar*

(nel frattempo, penso di aver bisogno di dormire di più.)


2
Supponendo che il richiedente non abbia fatto un errore quando (s) ha pubblicato la domanda, (s) che sta cercando rm Dar*, no rm !(Dar*).
Gilles 'SO- smetti di essere malvagio' il

... giusto, sì, ero bloccato in zsh ^modalità (simile alla basg !cosa).
Geekosaur,

1
+1 Ottima risposta, ho dovuto aggiungere | tr "\n" "\0"prima del xargsbit. Visto in questo post: stackoverflow.com/questions/20307299/…
Adam Plocher,


3

Se si desidera delimitare l'output di grepnewline anziché di spazi bianchi, è possibile specificarlo xargstramite l' -dopzione.

$ ls | grep '^Dar' | xargs -d '\n' rm

(come descritto in questa domanda)


2

Per passare l'output come argomento, tendo a usare un ciclo while poiché non ho familiarità con xargs.

ls | grep '^Dar' | while read line; do rm "$line";done;

questo è l'unico che ha funzionato nel mio caso.
Marbel,

0

Il miglior comando per me è:

find ./Daruchini* -exec rm {}\;
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.