GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser la commande 'mv' pour déplacer des fichiers sauf ceux d'un répertoire spécifique ?

Puisque find a une option d'exclusion, utilisez find + xargs + mv :

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

Notez que ceci est presque copié de la page de manuel de recherche (je pense que l'utilisation de mv --target-directory est meilleure que cpio).


Supposons que la structure du répertoire ressemble à,

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

Et nous devons déplacer les fichiers pour qu'ils ressemblent à,

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

Dans ce cas, vous devez exclure deux répertoires child1 et child2 , et déplacez le reste des répertoires dans child1 répertoire.

utiliser,

mv !(child1|child2) child1

Cela déplacera tous les autres répertoires dans child1 répertoire.


Ce n'est pas exactement ce que vous avez demandé, mais cela pourrait faire l'affaire :

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

(Essentiellement, déplacez le dossier exclu hors de l'arborescence plus grande à déplacer.)

Donc, si j'ai a/ et je veux exclure a/b/c/* :

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

Ou quelque chose comme ça. Sinon, vous pourrez peut-être obtenir find pour vous aider.


Obtenez d'abord les noms des fichiers et des dossiers et excluez ceux que vous voulez :

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

Passez ensuite les noms filtrés à mv comme premier paramètre et le deuxième paramètre sera la destination :

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

Linux
  1. Comment extraire des fichiers tar dans un répertoire spécifique ou différent sous Linux

  2. Comment trouver le nombre de fichiers dans un répertoire et des sous-répertoires

  3. 5 façons d'utiliser la commande move sous Linux

  4. Comment déplacer des fichiers spécifiques en fonction de leurs extensions ?

  5. Comment utiliser la commande rpm2cpio sous Linux

Comment utiliser la commande SCP pour transférer des fichiers

Comment utiliser la commande cd sous Linux

Comment déplacer un répertoire sous Linux

Comment lister les fichiers de manière récursive sous Linux

Comment compter les fichiers dans le répertoire sous Linux

Comment compter le nombre de fichiers dans un répertoire sous Linux