2016-08-02 14 views
2

Ich verwende diesen Befehl, um zu versuchen, alle Thumbs.db-Dateien in einem sehr großen Ordner zu löschen. Ich dachte -f sollte Löschung erzwingen, ohne um Bestätigung zu bitten, aber ich werde immer noch nach "y" oder "n" für jede Datei gefragt.`rm -f` fragt nach Bestätigung, wenn Alias ​​als` rm -i`

find "megapacks" -name Thumbs.db -ok rm -f {} \; 

Ich versuchte type rm zu sehen, ob es ein Alias ​​war und es reagierte mit

rm ist aliased zu `rm -i '

ich versucht, mit /bin/rm stattdessen aber i' m wird immer noch aufgefordert

find "megapacks" -name Thumbs.db -ok /bin/rm -f {} \; 

Hat jemand eine keine Idee, wie Sie die Bestätigung vermeiden können?

+1

Verwenden 'statt -delete'? – fedorqui

+0

Beachten Sie, dass Aliase für Argumente zu Befehlen nicht erweitert werden, was 'rm' hier wäre. – chepner

+0

'unalias rm', bevor Sie alle Vorsicht darüber verlieren, die Waffe auf Ihren Fuß zu richten. –

Antwort

4

Problem -ok Option ist, die als pro man find ist:

Wie -exec aber fragen Sie den Benutzer zuerst. Wenn der Benutzer einverstanden ist, führen Sie den Befehl aus. Ansonsten gib einfach false zurück.

Dies sollte mit -exec für Sie arbeiten:

find "megapacks" -name Thumbs.db -exec /bin/rm -f {} \; 

oder schneller:

find "megapacks" -name Thumbs.db -exec /bin/rm -f {} + 
+1

danke, du hast vollkommen recht, das ist es gelöst – robjbrain

2

Aber ich denke, das Problem ist, dass Sie -ok zu find, übergeben, welche

Wie -exec ist aber der Benutzer zuerst fragen.

Wenn die Alias ​​waren das Problem, einfach ungesetzt den Alias:

unalias rm 

Beachten Sie, dass dies nur die aktuelle Shell-Sitzung beeinflussen.

Sie können auch die -delete Option für find verwenden:

find "megapacks" -name Thumbs.db -delete 
Verwandte Themen