GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzare il comando 'mv' per spostare i file tranne quelli in una directory specifica?

Poiché find ha un'opzione di esclusione, usa find + xargs + mv:

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

Nota che questo è quasi copiato dalla pagina man find (penso che usare mv --target-directory sia meglio di cpio).


Supponiamo che la struttura dir sia come,

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

E dobbiamo spostare i file in modo che appaiano come

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

In questo caso, devi escludere due directory child1 e child2 e sposta il resto delle directory in child1 cartella.

usa,

mv !(child1|child2) child1

Questo sposterà tutto il resto delle directory in child1 cartella.


Questo non è esattamente quello che hai chiesto, ma potrebbe fare il lavoro:

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

(Essenzialmente, sposta la cartella esclusa fuori dall'albero più grande da spostare.)

Quindi, se ho a/ e voglio escludere a/b/c/* :

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

O qualcosa di simile. Altrimenti, potresti ottenere find per aiutarti.


Per prima cosa ottieni i nomi di file e cartelle ed escludi quello che vuoi:

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

Quindi passa i nomi filtrati a mv poiché il primo parametro e il secondo parametro saranno la destinazione:

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

Linux
  1. Come estrarre i file Tar in una directory specifica o diversa in Linux

  2. Come trovare il numero di file in una directory e sottodirectory

  3. Come utilizzare il comando Grep per trovare testo nei file

  4. Come spostare file specifici in base alle loro estensioni?

  5. Come utilizzare il comando trova di Linux per trovare i file

Come utilizzare il comando SCP per trasferire file

Come usare il comando cd in Linux

Come spostare una directory in Linux

Come elencare i file in modo ricorsivo in Linux

Come contare i file nella directory su Linux

Come contare il numero di file in una directory in Linux