Frage Verhindern Sie, dass mv die größere Datei mit demselben Namen überschreibt


Ich muss alle Dateien von einem Verzeichnis verschieben, die Verzeichnisstruktur verwerfend.

Leider haben einige Dateien den gleichen Dateinamen (Thumbnails). Ich suche nach etw. so was:

find /tmp/dirtree -type f -exec mv -i {} . \;

Wie kann ich das Überschreiben größerer Dateien während des Vorgangs verhindern?


0
2017-10-26 10:40


Ursprung




Antworten:


Erstelle das mymv.pl Perl-Skript:

#!/usr/bin/perl
use File::Copy;
$file = shift;
($name = $file) =~ s#.*/##;
if (-f $name and -s $file < -s $name) {
     warn "$name not moved";
} else {
     move($file, $name);
}

Ändern Sie dann die Zeile zu

find /tmp/dirtree -type f -exec perl mymv.pl {} \;

2
2017-10-26 11:02



Einfache dumme Lösung bedeutet KISS! Bitte bearbeiten Sie Ihren Beitrag und fügen Sie den perl Parameter nach -exec. Ich habe neugierige Probleme ohne das. Vielen Dank. - mate64
@msec: Aktualisiert. - choroba
Dies würde wahrscheinlich mehr Aufforderungen erhalten, wenn Sie erklären würden, was es getan hat. Zumindest von mir. In der Frage des OP sieht es so aus, als ob er die Dateien in das aktuelle Verzeichnis "." aber ich kann nicht sagen, wohin du es bewegst. - Buttle Butkus