GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie verwendet man den Befehl „mv“, um Dateien außer denen in einem bestimmten Verzeichnis zu verschieben?

Da find eine Option zum Ausschließen hat, verwenden Sie find + xargs + mv:

find /source/directory -name ignore-directory-name -prune -print0 | xargs -0 mv --target-directory=/target/directory

Beachten Sie, dass dies fast von der Find-Manpage kopiert wurde (ich denke, die Verwendung von mv --target-directory ist besser als cpio).


Nehmen wir an, die dir-Struktur ist wie,

|parent
    |--child1
    |--child2
    |--grandChild1
    |--grandChild2
    |--grandChild3
    |--grandChild4
    |--grandChild5
    |--grandChild6

Und wir müssen Dateien verschieben, damit es aussieht wie:

|parent
    |--child1
    |   |--grandChild1
    |   |--grandChild2
    |   |--grandChild3
    |   |--grandChild4
    |   |--grandChild5
    |   |--grandChild6
    |--child2

In diesem Fall müssen Sie zwei Verzeichnisse child1 ausschließen und child2 , und verschieben Sie die restlichen Verzeichnisse nach child1 Verzeichnis.

verwenden,

mv !(child1|child2) child1

Dadurch werden alle restlichen Verzeichnisse nach child1 verschoben Verzeichnis.


Dies ist nicht genau das, wonach Sie gefragt haben, aber es könnte die Aufgabe erfüllen:

mv the-folder-you-want-to-exclude somewhere-outside-of-the-main-tree
mv the-tree where-you-want-it
mv the-excluded-folder original-location

(Verschieben Sie im Wesentlichen den ausgeschlossenen Ordner aus dem größeren zu verschiebenden Baum.)

Also, wenn ich a/ habe und ich möchte a/b/c/* ausschließen :

mv a/b/c ../c
mv a final_destination
mkdir -p a/b
mv ../c a/b/c

Oder sowas ähnliches. Andernfalls erhalten Sie möglicherweise find um Ihnen zu helfen.


Holen Sie sich zuerst die Namen von Dateien und Ordnern und schließen Sie aus, was Sie wollen:

ls --ignore=file1 --ignore==folder1 --ignore==regular-expression1 ...

Übergeben Sie dann die gefilterten Namen an mv als erster Parameter und der zweite Parameter ist das Ziel:

mv $(ls --ignore=file1 --ignore==folder1 --ignore==regular-expression1 ...) destination/

Linux
  1. So finden Sie die Anzahl der Dateien in einem Verzeichnis und Unterverzeichnissen

  2. So verwenden Sie den Grep-Befehl, um Text in Dateien zu finden

  3. Wie verwendet man Inotifywait, um ein Verzeichnis für die Erstellung von Dateien einer bestimmten Erweiterung zu überwachen?

  4. Wie verschiebt man bestimmte Dateien basierend auf ihren Erweiterungen?

  5. Wie verwende ich den Befehl 'cp', um ein bestimmtes Verzeichnis auszuschließen?

So verwenden Sie den SCP-Befehl zum Übertragen von Dateien

So verwenden Sie den cd-Befehl unter Linux

So verschieben Sie ein Verzeichnis unter Linux

Wie man Dateien in Linux rekursiv auflistet

So zählen Sie Dateien im Verzeichnis unter Linux

So zählen Sie die Anzahl der Dateien in einem Verzeichnis in Linux