Wie kann ich mit dem mv
Befehl nur die einfachen Dateien (nicht die Verzeichnisse) von einem Ordner in Linux in einen anderen Ordner verschieben ?
Ich habe versucht mv * ~/
, aber es kopiert alles, einschließlich der Verzeichnisse.
Wie kann ich mit dem mv
Befehl nur die einfachen Dateien (nicht die Verzeichnisse) von einem Ordner in Linux in einen anderen Ordner verschieben ?
Ich habe versucht mv * ~/
, aber es kopiert alles, einschließlich der Verzeichnisse.
Antworten:
Du kannst es versuchen
find . -maxdepth 1 -type f -exec mv {} destination_path \;
-exec
Ich bin ein "Benutze einen Hammer für alles" Typ, also benutze ich Bourneshell-Programme für Dinge, für die andere externe Programme verwenden ...
for file in * .*
do
test -f "$file" && mv "$file" "$HOME"/
done
Einige Leute mögen es, Dinge so wenig wie möglich zu tippen, aber ich bin ein ziemlich schneller Typist, und ich habe solche Dinge in mein Gehirn eingebaut, so dass es nicht allzu mühsam ist, dies zu tun, anstatt genau nachzuschauen Argumente zu finden und auszuführen und all das.
YMMV, obwohl ...
@Mereghost ist sehr nah. Hier ist, was ich bekomme, um alle Dateien (einschließlich versteckter Dateien) zu verschieben, aber keine Verzeichnisse:
find . -maxdepth 1 -type f -name '*' -exec mv -n {} /destination_path \;
Bei der .
After-Suche wird davon ausgegangen, dass Ihr aktuelles Verzeichnis die Quelle der Dateien ist, die Sie verschieben möchten. Wenn nicht, kann der Befehl wie folgt überarbeitet werden:
find /source_path -maxdepth 1 -type f -name '*' -exec mv -n {} /dest_path \;
Wenn Sie nur normale und keine versteckten Dateien verschieben möchten:
find . -maxdepth 1 -type f -name '[!.]*' -exec mv -n {} /dest_path \;
Wenn Sie nur versteckte und keine regulären Dateien verschieben möchten:
find . -maxdepth 1 -type f -name '.*' -exec mv -n {} /dest_path \;
Sie können find verwenden
find * -maxdepth 1 -type f -exec mv {} ~ \;
mv `find ./sourcedir/* -type f` ./destdir
find
der -exec
Option ist der beste Weg, um das Problem zu vermeiden.