Hat jemand eine Lösung, um diese lästigen ._- und .DS_Store-Dateien zu entfernen, die nach dem Verschieben von Dateien von einem Mac auf einen Linux-Server erhalten werden?
ein Startverzeichnis angeben und loslassen? wie / var / www / html / down ...
Antworten:
Wechseln Sie in das Verzeichnis und verwenden Sie:
Nicht getestet, probieren Sie sie zuerst ohne die Xargs aus!
Sie können den Zeitraum nach dem Suchen durch das Verzeichnis ersetzen, anstatt zuerst in das Verzeichnis zu wechseln.
quelle
-delete
Aktion, die dies verkürzen könnte. @JT: Dies sucht rekursiv unter.
. Kommt darauf an, wie viele Dateien und Unterverzeichnisse es gibt ... können Sie nicht einfach verbieten, dass diese hochgeladen werden?-r
(rekursiven) Flags wird in diesem Fall nicht empfohlen, da Sie keine Verzeichnisse löschen möchten.command rm
eine bessere (dh direktere) Lösung? (Mit "direkt" meine ich, dass es sich speziell um das vorliegende Problem und nichts anderes handelt und daher weniger wahrscheinlich unerwünschte Nebenwirkungen hat und auch für jeden, der den Code warten muss, selbsterklärender ist später.)quelle
Neuere findutils unterstützt
-delete
, also:Hinzufügen,
-print
um auch eine Liste der Löschungen zu erhalten.Command funktioniert für Sie, wenn Sie ein aktuelles POSIX-System haben, glaube ich. Zumindest funktioniert es für mich unter OS X 10.8 und für andere, die es unter macOS 10.12 (Mojave) getestet haben.
Dank an @ephemient in einem Kommentar zu @ X-Istences Beitrag (dachte, es sei hilfreich genug, um eine eigene Antwort zu rechtfertigen).
quelle
find
standardmäßig in das aktuelle Arbeitsverzeichnis zurückgegriffen wird..
unter macOS 10.12 (Sierra).Einfacher Befehl:
Viel Glück!
quelle
rm -i
Fund verwendet ./ -name '* py'` -rf, which did NOT prompt me to delete files. you will need to take it on the end (i.e.
-rfi`). Gott sei Dank für mein Backup-Skript.-bash: /bin/rm: Argument list too long
quelle
Sie könnten zu zsh anstatt zu bash wechseln. Auf diese Weise können Sie ** verwenden, um Dateien an einer beliebigen Stelle in einem Verzeichnisbaum abzugleichen:
Sie können sie auch folgendermaßen kombinieren:
Zsh hat viele andere Funktionen, die Bash fehlen, aber für diese allein lohnt es sich, den Wechsel vorzunehmen. Es ist in den meisten (wahrscheinlich allen) Linux-Distributionen sowie in Cygwin und OS X verfügbar.
Weitere Informationen finden Sie auf der zsh-Website .
quelle
**
auch :-) (obwohl nicht standardmäßig,shopt -s globstar
muss eingestellt werden)quelle
find
, die dies unterstützt,+
ist sie xargs-ähnlich:find . -name "FILE-TO-FIND" -exec rm -rf {} +
- (außerdem fehlt Ihnen zuvor ein Leerzeichen-exec
)Beispiel zum rekursiven Löschen von "Thumbs.db";
Validieren durch:
Dies sollte nun keinen der Einträge mit "Thumbs.db" im aktuellen Pfad anzeigen.
quelle
xargs
undprint0
stattdessenexec
(es gibt Gründe).Es ist besser zu sehen, was entfernt wird, indem Sie dieser Antwort -print hinzufügen
quelle
wenn Sie Bash 4.0 ++ haben
quelle
Ein paar Dinge zu beachten:
'-delete' ist nicht rekursiv. Wenn also .TemporaryItems (Ordner) Dateien enthält, schlägt der Befehl fehl.
Es gibt viele dieser lästigen Dateien, die von Macs erstellt wurden: .DS_Store ._. DS_Store .TemporaryItems .apdisk
Dieser eine Befehl spricht alle an. Speichert beim wiederholten Ausführen von Find für mehrere Übereinstimmungen.
quelle
Dies funktioniert auch:
sudo rm -rf 2018-03-*
hier Ihre Löschdateien mit Namen des Formats 2018-03- (etwas anderes)
halte es einfach
quelle
sudo
noch geben Sie Informationen darüber an, wie diesrm
im Kontext Ihrer Antwort funktioniert.