Wie finde und vergleiche ich ähnliche Dateien im Dropbox-Ordner?

2

Ich benutze Dropbox und habe eine Reihe von Dateien wie:
prefs (widersprüchliche Kopie des Hauses vom 20.07.2009) .js

Was ich tun möchte, ist, alle "widersprüchlichen Kopie ..." Dateien zu finden und dann jede mit ihrer nicht widersprüchlichen Version zu vergleichen.

Der folgende Befehl gibt mir beispielsweise das Ergebnis:

$ find . -name "*onflict*" -exec ls -ld {} \;
-rw-r--r-- 1 eric eric 24203 2009-07-19 14:42 ./prefs (home's conflicted copy 2009-07-20).js

aber ich möchte eine Ausgabe wie:

-rw-r--r-- 1 eric eric 24429 2009-07-21 11:43 prefs.js
-rw-r--r-- 1 eric eric 24203 2009-07-19 14:42 prefs (home's conflicted copy 2009-07-20).js

und dann kann ich entscheiden, was ich mit der in Konflikt stehenden Kopie machen möchte. Irgendwelche Ideen?

pcapademic
quelle

Antworten:

2

Ich habe etwas herausgefunden, das zu funktionieren scheint, aber ich würde Vorschläge zur Verbesserung begrüßen, einschließlich der Verbesserung:

find . -name "*onflict*" | while read name; do ls -ld "$name"; ls -ld "${name/ (*onflict*)/}"; echo -n "$name" | xargs -0 -p rm ; echo ; done

In einem einfacheren Lese- und Schreibformat:

find . -name "*onflict*" | \
while read name; do 
    ls -ld "$name"
    ls -ld "${name/ (*onflict*)/}"
    echo -n "$name" | xargs -0 -p rm 
    echo 
done

Verweise:

pcapademic
quelle
0

Verwenden Sie nach dem Abgleichen des Dateinamens mit Konflikten einen regulären Ausdruck, um die Klammer und das Leerzeichen durch einen Stern zu ersetzen. Beispiel:

ls -d "prefs*.js"
Stefan Thyberg
quelle
Übrigens ist das Beispiel ls -d "prefs * .js" ein Beispiel für die Shell-Dateinamenerweiterung oder den Shell-Pattern-Matching, eine Teilmenge der regulären Ausdrücke.
pcapademic
Aber wie wende ich einen regulären Ausdruck auf das {} in der Option find command -exec an?
pcapademic
Vielleicht möchten Sie stattdessen eine Perl-Version davon schreiben, aber ich wette, dass es mit awk / sed mit nur einer einzigen Zeile geschrieben werden kann. Ich bin einfach nicht kompetent genug, um es zu beschreiben.
Stefan Thyberg