67 votes

Shell Shell pour déplacer tous les fichiers des sous-dossiers vers le dossier parent.

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

または

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

Comment faire ?

108voto

user42467 Points 822

Allez à votre 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é afin de les déplacer dans le répertoire courant.

5voto

Bob Points 940

Vous pourriez créer un fichier et le nommer "cutme" (pour créer un fichier appelé cutme dans le terminal tapez nano cutme . Pour le sauvegarder, appuyez sur CTRL+X puis sur ENTER.) par exemple et collez-y ce qui suit en supposant que :

  1. Vous voulez faire cela récursivement (dans les sous-dossiers et les sous-dossiers de ces sous-dossiers).
  2. Vous voulez éviter de déplacer le fichier script.
  3. Vous avez les droits pour déplacer les fichiers dans ce dossier.
  4. Les fichiers peuvent inclure ou non des espaces dans leur nom.

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

Notez le nom cutme à l'intérieur de la ligne. Il doit être le même que le script que vous allez exécuter.

Après avoir créé le fichier et collé la ligne ci-dessus, exécutez ce qui suit dans le même dossier que le script :

chmod +x cutme . Cela donnera à votre nouveau fichier le drapeau "exécutable" afin que vous puissiez l'exécuter comme ceci : ./cutme .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X