Ich möchte eine Befehlszeile ausführen:
cd ~/www/tmp/; rm -P 2*
Ich erhalte jedoch eine Fehlermeldung, wenn keine Dateien mit 2 beginnen.
Sie würden denken, ich würde jedoch verwenden wollen -f
:
-f Attempt to remove the files without prompting for confirmation, regardless of the file's permissions. If the file does not exist, do not display a diagnostic message or modify the exit status to reflect an error.
Und ich kümmere mich um Dateiberechtigungen - wenn etwas Seltsames vor sich geht, würde ich den Befehl abbrechen vorziehen. Ich möchte nur Fehler unterdrücken, die nicht existieren.
Ich habe mir einige andere Fragen mit 'rm-Fehlern' angesehen und diese beiden gefunden, die (irgendwie) relevant erscheinen:
Löschen Sie Dateien und Verzeichnisse anhand ihrer Namen. Datei oder Verzeichnis existiert nicht
Aber ich verstehe nicht alles, was in den Antworten auf diese Frage vor sich geht, und weiß nicht, dass ich es brauche?
Der touch
in dieser Frage vorgeschlagene Hack:
Haben Sie nicht gemeldet, wenn eine Datei fehlt?
Scheint praktikabel zu sein, da ich nicht denke, dass mir der Leistungstreffer etwas ausmacht (aber welche Art von Leistungstreffer würden Sie nehmen? - dh: Ist dies eine einigermaßen skalierbare Technik oder lerne ich nur sehr schlechte Gewohnheiten?)
Ich bin mir nicht sicher, wie ich eine if-then
innerhalb der Kommandozeile machen würde.
Gibt es andere Optionen für eine einfache Bereinigung durch Ausschneiden und Einfügen in der Befehlszeile?
Würde find -delete
für meinen Fall besser funktionieren? Wenn ja warum?
Fehler in Frage:
rm: 2*: No such file or directory
zsh
als interaktive Shell? Erhalten Sie einen No matches found
Fehler?
2*
rm übergeben, anstatt sie auf eine Liste von Dateien zu erweitern. Schauen Sie sich den fraglichen Fehler an: Es heißt, dass sich rm beschwert, nicht sh / bas / zsh / ...
rm
, also müssen Sie sagen, was das ist.