2009-04-28 16 views
12

自分のidに属するUnixディレクトリからrmファイルを取得する必要があります。私は、このコマンドを構築しようとしたが、無駄に:Unixで自分のファイルだけを削除する

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

マイ結果:使用します。rm [-firRe] [ - ]ファイル...

答えて

13

あなたは本当に近くでした。試してください:

元のパイプラインの最初の3つのセグメントを囲む一重引用符ではなく、バッククォートです。私にとっては、ファイル名の列は$ 8でしたが、もし$ 9があなたのための右の列なら、それはそれを行うべきです。フォルダ/tmpからuser_name

+0

入力いただきありがとうございます。素晴らしい仕事をした。それは他の答えよりもタイピングが少ないですが、私もそれらを感謝します。 –

+0

私のプロンプトに色がついているのでこれが失敗する:rm:\ 033 [0m.X1-lock \ 033 [0m]:そのようなファイルやディレクトリはありません。\ 033 [0mは環境変数プロンプト) – liang

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

独自のユーザーIDを入れて(または多分ユーザー番号)を「myuser」に入力します。

4

ユーザーに属しているファイルを検索し、それらを削除することができfindで試してみてください:

find . -user *username* -delete 

さらに詳しい情報:man find

3

RMは標準入力に削除するファイルのリストを受け付けていませんが(これは、パイプを通過させることにより、あなたがやっていることである。

この

find . -type f -user username -exec rm -f {} \; 
をお試しください
12

rmはstdinから読み込みません。

-user $(whoamiを)見つけるには、削除せずに最初

してください常にテストを-delete。

+1

ファイルを削除する場合は、-type fを追加してください。 –

+1

現在のディレクトリでのみ動作する-maxdepth 1も可能です。 – millimoose

+1

これは最も簡潔ですが、-userオプションの前にコマンドにディレクトリを置く必要があることに注意してください。 '見つける。 -user $(whoami)-delete ' – Jay

1

あなたは、検索を使用することができます:あなたはそれが同様にサブディレクトリを処理したい場合は

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

は-maxdepth 1をドロップします。

1

削除ファイル(あなたがあなたのフォルダでこれを置き換えることができます)、60日より古い - あなたがここに任意の日付を使用していますが、user_nameホームフォルダにdeleted.txtファイルに証拠を維持することを確認し、CA:

find /tmp -user user_name -mtime +60 -exec rm -rfv {} \; >> /home/user_name/deleted.txt 
関連する問題