Etwas , das ich glaube , ich sollte sicher wissen: Wenn ich ls <something>
, wird rm <something>
entfernen genau die gleichen Dateien , die ls
angezeigt werden ? Gibt es Umstände, unter denen rm
nicht angezeigte Dateien entfernt werden könnten ls
? (Dies ist in der 18.04 Bash)
Edit: danke an alle die geantwortet haben. Ich denke, die vollständige Antwort ist eine Kombination aller Antworten, daher habe ich die am häufigsten gewählte Antwort als "die Antwort" akzeptiert.
Unerwartete Dinge, die ich dabei gelernt habe:
ls
ist nicht so einfach, wie Sie vielleicht denken, wenn Sie mit seinen Argumenten umgehen- In einer einfachen Installation von Ubuntu, .bashrc Aliase
ls
- Benennen Sie Ihre Dateien nicht mit einem Bindestrich, da diese wie Befehlsargumente aussehen können, und die Benennung von one -r verlangt danach!
find -delete
besser als rm
? Sie sagen "Deshalb" , aber mir ist völlig unklar, worauf sich das bezieht. Beachten Sie auch, dass Ihr find
Aufruf alle Dateien im aktuellen Verzeichnis rekursiv löscht , wobei rm
nur die Dateien im unmittelbaren Verzeichnis gelöscht werden. Auch -name *
ist ein No-Op. Alles in allem bin ich ziemlich verwirrt über Ihren Rat ...
find
ist, weil Sie es ausführen können, alle Dateien anzeigen und dann den gleichen Befehl mit ausführen können -delete
. Da Sie bereits die Ergebnisse von gesehen haben find
, sollte es keine Unklarheit darüber geben, was entfernt wird (ich würde gerne mehr Details dazu in Form einer Antwort hören)
-delete
anzeigen und dann denselben Befehl mit " ausführen - Aber wie ist das besser als Ausführen ls <filespec>
, gefolgt von rm <filespec>
(dem das OP bereits weiß, wie es geht)?
find ... -print
zuerst ausführen , um zu bestätigen, welche Dateien gelöscht werden sollen, find ... -delete
werden die zwischen den beiden Befehlen erstellten Dateien trotzdem gelöscht. Wenn Sie beide -print
und verwenden -delete
, erhalten Sie keine Bestätigung, sondern nur einen nachträglichen Bericht darüber, was gelöscht wurde (und Sie können diesen auch verwenden rm -v
).
rm
keine--dry-run
Flagge hat ...