Kopieren Sie einfach mehrere Dateien auf einmal von der Kommandozeile
Es gibt verschiedene Möglichkeiten, wie Sie dies erreichen können. Das Einfachste, was ich gesehen habe, ist das Folgende.
cp /home/usr/dir/{file1,file2,file3,file4} /home/usr/destination/
Die Syntax verwendet den Befehl cp, gefolgt vom Pfad zu dem Verzeichnis, in dem sich die gewünschten Dateien befinden. Alle Dateien, die Sie kopieren möchten, sind in Klammern und durch Kommas getrennt.
Stellen Sie sicher, dass zwischen den Dateien keine Leerzeichen sind. Der letzte Teil des Befehls /home/usr/destination/
ist das Verzeichnis, in das Sie die Dateien kopieren möchten.
oder wenn alle Dateien dasselbe Präfix, aber unterschiedliche Endungen haben, können Sie so etwas tun:
cp /home/usr/dir/file{1..4} ./
Wobei Datei1, Datei2, Datei3 und Datei4 kopiert würden.
Wie Sie die Frage formuliert haben, ist Ihrer Meinung nach genau das, wonach Sie suchen. Es hört sich jedoch auch so an, als ob Sie nach einem Befehl suchen, mit dem Sie aus einer Liste von Dateien lesen und alle in ein bestimmtes Verzeichnis kopieren können. Wenn dies der Fall ist, lassen Sie es mich wissen und ich bearbeite meine Antwort.
Umgang mit Duplikaten mit Python
Also habe ich ein kleines Python-Skript geschrieben, von dem ich glaube, dass es die Arbeit erledigen sollte. Ich bin mir jedoch nicht sicher, wie gut Sie sich mit Python auskennen (wenn überhaupt), daher werde ich versuchen, die Verwendung dieses Skripts so gut wie möglich zu erläutern, und bitte Sie, so viele Fragen wie nötig zu stellen.
import os,sys,shutil
### copies a list of files from source. handles duplicates.
def rename(file_name, dst, num=1):
#splits file name to add number distinction
(file_prefix, exstension) = os.path.splitext(file_name)
renamed = "%s(%d)%s" % (file_prefix,num,exstension)
#checks if renamed file exists. Renames file if it does exist.
if os.path.exists(dst + renamed):
return rename(file_name, dst, num + 1)
else:
return renamed
def copy_files(src,dst,file_list):
for files in file_list:
src_file_path = src + files
dst_file_path = dst + files
if os.path.exists(dst_file_path):
new_file_name = rename(files, dst)
dst_file_path = dst + new_file_name
print "Copying: " + dst_file_path
try:
shutil.copyfile(src_file_path,dst_file_path)
except IOError:
print src_file_path + " does not exist"
raw_input("Please, press enter to continue.")
def read_file(file_name):
f = open(file_name)
#reads each line of file (f), strips out extra whitespace and
#returns list with each line of the file being an element of the list
content = [x.strip() for x in f.readlines()]
f.close()
return content
src = sys.argv[1]
dst = sys.argv[2]
file_with_list = sys.argv[3]
copy_files(src,dst,read_file(file_with_list))
Dieses Skript sollte relativ einfach zu bedienen sein. Kopieren Sie zunächst den obigen Code in das Programm gedit (sollte in Ubuntu vorinstalliert sein) oder in einen anderen Texteditor.
Nachdem dies abgeschlossen ist, speichern Sie die Datei als move.py in Ihrem Home-Verzeichnis (es kann sich um ein beliebiges Verzeichnis handeln, zur Vereinfachung der Anweisungen können Sie jedoch einfach das Home-Verzeichnis verwenden) oder fügen Sie das Verzeichnis, in dem sich die Datei befindet, zu Ihrem PATH hinzu. Dann cd
zu Ihrem Home - Verzeichnis (oder was auch immer Verzeichnis gespeichert Sie move.py in) vom Terminal und geben Sie den folgenden Befehl ein :
python move.py /path/to/src/ /path/to/dst/ file.txt
Dies sollte alle Dateien, die im Quellverzeichnis aufgelistet sind, in das Zielverzeichnis kopieren, wobei Duplikate im Format pic (1) .jpg, pic (2) .jpg usw. vorliegen.
file.txt sollte eine Datei sein, die alle Bilder auflistet, die Sie mit jedem Eintrag in einer eigenen separaten Zeile kopieren möchten.
Dieses Skript sollte sich in keiner Weise auf das Quellverzeichnis auswirken. Achten Sie jedoch darauf, die richtigen Pfade zum Quell- und Zielverzeichnis einzugeben. Das Schlimmste, was passieren kann, ist, dass Sie die Dateien in das falsche Verzeichnis kopieren.
Anmerkungen
- In diesem Skript wird davon ausgegangen, dass sich alle Originalbilder im selben Verzeichnis befinden. Wenn Sie möchten, dass es auch Unterverzeichnisse überprüft, muss das Skript geändert werden.
- Wenn Sie versehentlich einen Dateinamen falsch eingeben, gibt das Skript den Fehler
"Datei existiert nicht" aus und fordert Sie auf, die Eingabetaste zu drücken, um fortzufahren, und das Skript kopiert den Rest der Liste weiter.
- Vergessen Sie nicht,
/
sowohl den Pfad zum Quellverzeichnis
als auch den Pfad zum Zielverzeichnis anzuhängen. Andernfalls gibt das Skript einen Fehler an Sie zurück.
cp -rp /copying/from/{folder1/,folder2/,folder3/} path/to/folder
, wop
zum Kopieren der Ordner Erlaubnis ist.