2009-04-28 11 views
12

Ho bisogno di recuperare file da una directory Unix che appartiene solo al mio id. Ho provato la costruzione di questo comando, ma senza alcun risultato:Rimuovere solo i miei file in Unix

ls -la | grep 'myid' | awk ' { print $9 } ' | rm 

Il mio risultato: Uso: rm [-firRe] [-] File ...

risposta

13

Eri molto vicino. Prova:

rm `ls -la | grep 'myid' | awk ' { print $9 } '` 

Nota che quelli sono apici inversi, non citazioni singoli che circondano i primi tre segmenti di pipeline originale. Anche per me la colonna nomefile era $ 8, ma se $ 9 è la colonna giusta per te, allora dovrebbe farlo.

+0

Grazie mille per l'input. Ha funzionato alla grande È meno digitante rispetto alle altre risposte, ma apprezzo anche quelle. –

+0

questo non funziona perché il mio prompt è colorato: rm: impossibile rimuovere '\ 033 [0m.X1-lock \ 033 [0m ': Nessun file o directory - il \ 033 [0m sta arrivando da una variabile di ambiente (richiesta) – liang

14
find . -user myuser -print0 |xargs -0 rm 

mettere il proprio userid (o forse numero utente) in per "myuser".

4

Prova con find in cui è possibile cercare i file che appartengono a un utente e quindi eliminarli:

find . -user *username* -delete 

Maggiori informazioni: man find

3

rm non accetta un elenco di file da eliminare sulla stdin (che è quello che si sta facendo facendola passare attraverso il tubo.

Prova questo

find . -type f -user username -exec rm -f {} \; 
12

rm non legge dallo stdin.

find -user $ (whoami) -delete

Si prega sempre di prova senza la cancellazione prima.

+1

Nota, aggiungere -tipo f se si desidera eliminare solo i file. –

+1

Probabilmente anche un -maxdepth 1 per funzionare solo nella directory corrente. – millimoose

+1

Questo è il più conciso, ma si noti che è necessario inserire la directory nel comando prima dell'opzione -user, ad es. 'trova . -user $ (whoami) -delete ' – Jay

1

È possibile utilizzare find:

find . -maxdepth 1 -type f -user myid -print0 | xargs -0 rm -f 

cadere il -maxdepth 1 se si desidera gestire sottodirectory.

1

Eliminazione di file di user_name dalla cartella /tmp (è possibile sostituire questo con la cartella) più vecchie di 60 giorni - si ca utilizzare qualsiasi data qui, ma assicurarsi di mantenere la prova in un file deleted.txt in user_name cartella home:

find /tmp -user user_name -mtime +60 -exec rm -rfv {} \; >> /home/user_name/deleted.txt 
Problemi correlati