Verschieben Sie Dateien mit übereinstimmenden Dateinamen in ein anderes Verzeichnis

Verschieben Sie Dateien mit übereinstimmenden Dateinamen in ein anderes Verzeichnis

Ich habe zwei Verzeichnisse: dir_1welches hat a.mp4, b.mp4, c.mp4, d.mp4und dir_2welches hat nur a.txt, b.txt. Das Skript sollte a.mp4und b.mp4nach verschieben dir_3, da nur diese Dateinamen mit den Dateinamen in übereinstimmen dir_2. Ich finde es zu schwierig, den Skripten zu folgen, wenn ich diese Art von bestimmten Operationen durchführen muss.

Antwort1

Versuchen,

for f in "dir_2"/*; do
    filename=${f##*/}
    mv -t "dir_3" "dir_1/${filename%.*}".*
done
  • Dateien in Schleife einfügen dir_2(verwenden, *.txtum nur diese Dateien in einer Schleife zu schleifen)
  • ${f##*/}gibt Ihnen den Dateinamen ohne Pfad.
  • ${filename%.*}gibt Ihnen den Dateinamen ohne Erweiterung.
  • mv -t "dir_3" "dir_1/${filename%.*}".*verschiebt alle Dateien mit der angegebenen Erweiterung filename(ohne Erweiterung) nach dir_3. Sie können bei Bedarf .mp4anstelle von angeben..*

verwandte Informationen