Script shell pour déplacer tous les fichiers des sous-dossiers vers le dossier parent

28

J'ai un tas de dossiers dans le dossier A . Je veux déplacer les fichiers de tous ces dossiers vers A .

Ou

Je veux couper tous les fichiers des dossiers enfants et les coller dans le dossier parent.

Comment faire cela?

    
posée virpara 05.06.2012 - 07:32
la source

2 réponses

56

Accédez à votre répertoire A et exécutez

find . -mindepth 2 -type f -print -exec mv {} . \;

ce qui signifie "trouver tous les fichiers dans ce répertoire et ses sous-répertoires et exécuter mv avec le répertoire cible. pour chaque fichier trouvé pour les déplacer dans le répertoire courant.

    
réponse donnée Tuminoid 05.06.2012 - 07:56
la source
4

Eh bien, vous pouvez créer un fichier et le nommer "cutme" (pour créer un fichier appelé cutme dans le terminal, tapez nano cutme . Par exemple, pour le sauvegarder, appuyez sur CTRL + X, puis appuyez sur ENTREE). en supposant que:

  1. Vous voulez faire cela récursivement (dans les sous-dossiers et sous-dossiers de ces sous-dossiers)
  2. Vous voulez ignorer le déplacement du fichier script
  3. Vous êtes autorisé à déplacer les fichiers dans ce dossier
  4. Les fichiers peuvent ou non inclure des espaces dans leurs noms

find * -type f -print -not -type d -and -not -regex 'cutme' -exec mv {} .. \;

Notez le nom cutme dans la ligne. Il devrait être identique au script que vous allez exécuter.

Après avoir créé le fichier et collé la ligne ci-dessus, exécutez les opérations suivantes dans le même dossier que le script:

chmod +x cutme . Cela donnera à votre nouveau fichier l'indicateur "Executable" pour que vous puissiez l'exécuter comme ceci: ./cutme .

    
réponse donnée Luis Alvarado 05.06.2012 - 08:09
la source

Lire d'autres questions sur les étiquettes