2016-11-07 16 views
1

を削除することはできませんこれは私のシェルコマンドラインです:検索Linuxのコマンドは、ファイル

find /home/ -depth -type f -iname "*php.jpg*" -o -iname "*php.gif*" -o -iname "*php.png*" -o -iname "*php.txt*" -o -iname "*html.jpg*" -o -iname "*html.gif*" -o -iname "*html.png*" -iname "*php3.jpg*" -delete 

私の権限はrootです。

このコマンドラインをダウン-deleteで実行すると、ファイルのリストが表示されます。しかし、私はこのコマンドでファイルを削除することはできません。

何か間違っていますか?

+0

'-delete'フラグは' find'のすべてのバージョンで利用できません。 – SLePort

答えて

0

あなたは使用することができます。

find /home/ -depth -type f -iname "*php.jpg*" -o -iname "*php.gif*" -o -iname "*php.png*" -o -iname "*php.txt*" -o -iname "*html.jpg*" -o -iname "*html.gif*" -o -iname "*html.png*" -iname "*php3.jpg*" -exec rm -f {} \; 
1

-deleteアクションは一部だけfindのバージョン(例えばGNU find)で利用可能です。これはBSD OSによって導入されました。 GNU findutils page

「-delete」アクションは、BSDファミリのオペレーティングシステムによって導入されました。

find /home/ -depth -type f \(-iname "*php.jpg*" -o -iname "*php.gif*" -o -iname "*php.png*" -o -iname "*php.txt*" -o -iname "*html.jpg*" -o -iname "*html.gif*" -o -iname "*html.png*" -iname "*php3.jpg*" \) -exec rm -f {} \; 

編集:あなたはより多くのポータブル-execアクション使用することができます

すべて-iname式に-deleteアクションを適用する

注意を、あなたはグループ彼らが使用しては、括弧をエスケープする必要があります。

find /home/ -depth -type f \(-iname "*php.jpg*" -o -iname "*php.gif*" -o -iname "*php.png*" -o -iname "*php.txt*" -o -iname "*html.jpg*" -o -iname "*html.gif*" -o -iname "*html.png*" -iname "*php3.jpg*" \) -delete 
+0

私はそれを試して、何も変更されません。リターン文字列に問題があるか他に何かがあるかもしれません。 私がコマンドラインを実行すると、/ home/-depth -type f -iname "* php.jpg *" -deleteを見つけることができます。それは動作しますが、私は複数の名前でコマンドを実行します。それは動作しません。 – Diego

+0

'-iname'式のグループ化に関する私の編集を参照してください。 – SLePort

2

これを試すことができます。

find /home/ -type f \(-iname "*php.jpg*" -o -iname "*php.gif*" -o -iname "*php.png*" -o -iname "*php.txt*" -o -iname "*html.jpg*" -o -iname "*html.gif*" -o -iname "*html.png*" -iname "*php3.jpg*" \) -delete 

上記のように、複数の名前を角かっこで囲む必要があります。

は、「あなたが、ブラケットに をファイル拡張子を囲み、また、コマンドのように文字をエスケープ(バックスラッシュ)\を使用することをお勧めします。」

関連する問題