2009-04-28 14 views
12

Potrzebuję plików rm z katalogu unix, które należą tylko do mojego id. Próbowałem budowy tego polecenia, ale bezskutecznie:Usuwanie tylko moich plików w systemie Unix

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

Mój wynik: Wykorzystanie: rm [-firRe] [-] Plik ...

Odpowiedz

13

Byłeś bardzo blisko. Spróbuj:

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

Należy pamiętać, że są to backticks, nie apostrofów otaczające pierwsze trzy segmenty z oryginalnego rurociągu. Również dla mnie kolumna nazwy pliku wynosiła 8 USD, ale jeśli 9 $ jest odpowiednią kolumną dla ciebie, to powinno to zrobić.

+0

Dziękuję bardzo za wkład. Pracował świetnie. Jest mniej typowania niż inne odpowiedzi, ale ja też to doceniam. –

+0

to nie dla mnie, ponieważ mój monit jest kolorowy: rm: nie można usunąć '\ 033 [0m.X1-lock \ 033 [0m ': Brak takiego pliku lub katalogu - \ 033 [0m przychodzi ze zmiennej środowiskowej (skłonić) – liang

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

Umieścić swój własny identyfikator użytkownika (lub może numer użytkownika) dla "myuser".

4

Spróbuj z find gdzie można wyszukać pliki należące do użytkownika, a następnie usunąć je:

find . -user *username* -delete 

Więcej informacji: man find

3

rm nie akceptuje listę plików do usunięcia na stdin (co jest, co robisz przez przepuszczenie go przez rurę.

Spróbuj

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

rm nie czyta ze standardowego wejścia.

find -user $ (whoami) Usuń nie

Proszę zawsze bez testu najpierw usunąć.

+1

Uwaga, dodaj -type f, jeśli chcesz tylko usunąć pliki. –

+1

Również prawdopodobnie -maxdepth 1 działa tylko w bieżącym katalogu. – millimoose

+1

To jest najbardziej zwięzłe, ale pamiętaj, że musisz umieścić katalog w komendzie przed opcją -user, np. 'odnaleźć . -user $ (whoami) -delete ' – Jay

1

Można użyć znaleźć:

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

Rzuć -maxdepth 1 jeśli chcesz go obsługiwać także podkatalogi.

1

Usuwanie plików z user_name z folderu /tmp (można zastąpić ten z folderu) starsze niż 60 dni - CA użyć dowolnego terminu tutaj, ale upewnij się zachować dowody w pliku deleted.txt w user_name katalogu domowym:

find /tmp -user user_name -mtime +60 -exec rm -rfv {} \; >> /home/user_name/deleted.txt 
Powiązane problemy