検索の問題:無効な述語 '-delete'


3

私は実行しようとしています(unix-shell、win7):

find . -maxdepth 1 -name "*.jpg" -size -50k -delete

そしてエラーを取得します。

find: invalid predicate '-delete'

何かヒントは?

回答:


5

また見つけることができる xargs find&だけでなく、役に立ちます。削除操作はできますが、コマンドを実行した後にテキストを処理したい場合があります。この場合、

find . -maxdepth 1 -name "*.jpg" -size -50k | xargs rm -f

最初にxargsの前に必ず "echo"を付けて作業をチェックするようにしてください(したがって、実行する前にコマンドがどのように見えるかがわかります)。これは次のようになります。

find . -maxdepth 1 -name "*.jpg" -size -50k | xargs echo rm -f

のバージョン echo で見つかったファイルは含めません find;入力を無視し、リテラル文字列 'xargs rm -f'をエコーバックします。
chepner

ありがとう - xargsが一番簡単です、私は思います。 IFS=$'\t\n' 私にはうまくいきませんでした..そして、それらを永久に削除する代わりに、ファイルをビンに入れるコマンドがあるでしょうか?
Kay

@ケイ - ありません!スペースについては、xargs内の引数に "-i"フラグを付けて配置します。好きです… find . | xargs -i rm -f "{}" そのため、-iは「引数を配置します」、{}は「ここに配置したい場所です」と表示します。それからあなたの殻に「こんにちは、がらくたがあるので、ええ、ただ引用符の中のものを取りなさい」と言うための引用。
dougBTV

@ Chepner - おっと!私は持っていた echo 間違った場所に。私はそれを動かしました、今それは私が意図したとおりに機能するはずです。
dougBTV

@ケイ - それらを箱に入れることについて、もう一度読んでください、私はそれらを/ tmpに移動します。 ....のように、位置を使って同じことができます。 find . | xargs -i mv "{}" /tmp/
dougBTV

4

のバージョン find あなたが(Windowsから)実行しているUNIXシェルから見つかった -delete 述語。

考えられる代替案は - :

find . -maxdepth 1 -name "*.jpg" -size -50k -exec rm {} \;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.