Comment puis-je déplacer des fichiers et des répertoires vers le dossier parent sous Linux?

Dans Linux (Ubuntu), comment déplacer tous les fichiers et répertoires dans le répertoire parent?

  trouver .  -maxdepth 1 -exec mv {} .. \; 

Cela déplacera également les fichiers cachés.

Vous recevrez le message:

  Mv: ne peut pas bouger `. '  À `../. ': Périphérique ou ressource occupée 

Quand il essaie de se déplacer . (Répertoire courant), mais cela ne causera aucun dommage.

Je suis venu ici parce que je suis nouveau sur ce sujet aussi. Pour une raison quelconque, ce qui précède n'a pas fait l'affaire pour moi. Ce que j'ai fait pour déplacer tous les fichiers d'un dir vers son dir parent était:

 cd to/the/dir mv * ../ 

Tapez ceci dans le shell:

 mv *.* .. 

Cela déplace tous les fichiers d'un niveau supérieur.

Le caractère * est un caractère générique. Alors *.deb déplacera tous les fichiers .deb, et par exemple Zeitgeist.* Déplacera Zeitgeist.avi et Zeitgeist.srt un dossier vers le haut.

Et, bien sûr .. indique le répertoire parent.

Il ne peut pas être plus simple que:

 mv * ../ 

Pour déplacer aussi les fichiers cachés:

 mv /path/subfolder/{.,}* /path/ 

mv est une commande pour déplacer des fichiers, * signifie que tous les fichiers et dossiers et ../ est le chemin d'accès au répertoire parent.

Une méthode qui ne provoque aucune erreur et fonctionne à chaque fois:

 ls -1A . | while read -r file do mv "./${file}" .. done 
 find . -maxdepth 2 -type f -exec mv {} .. \; 

J'ai utilisé une variante ci-dessus pour déplacer tous les fichiers des sous-dossiers vers le parent.

J'avais des données dans les dossiers par année, mais j'ai trouvé en utilisant des métadonnées. Je pourrais les avoir toutes dans le même dossier, ce qui facilitait la gestion.

par exemple.

 /data/2001/file_1 /data/2002/file_2 /data/2003/file_3 

Il n'est pas nécessaire de modifier les répertoires. Ajoutez simplement * à la fin du chemin:

 mv /my/folder/child/* /my/folder/ 

Au-dessus ne déplace que des fichiers non cachés. Pour déplacer uniquement les fichiers cachés, utilisez. *

 mv /my/folder/child/.* /my/folder/ 

Au-dessus de deux peuvent être combinés à une seule commande:

 mv /my/folder/child/{.,}* /my/folder/ 

Voir également: Comment déplacer tous les fichiers, y compris les fichiers cachés dans le répertoire parent via *

En supposant que tous vos fichiers cachés commencent par un point suivi d'une lettre ou d'un nombre (ce qu'ils devraient), vous pouvez utiliser

 mv * .[A-Za-z0-9]* .. 

La partie .[A-Za-z0-9]* est de s'assurer que vous n'essayez pas de vous déplacer . Ou .. long, ce qui échouerait.

En bash, vous pouvez utiliser shopg -s dotglob pour faire correspondre tous les fichiers et les déplacer simplement par

 shopt -s dotglob; mv * .. 

Ce n'est pas la meilleure solution puisque le réglage est permanent pour le shell jusqu'à ce que vous le modifiez par

 shopt -u dotglob 

Mais je pense qu'il est bon de savoir.

Il est simple de déplacer tous les fichiers et dossiers vers le répertoire parent sous Linux.

Accédez à ce dossier et utilisez cette commande:

 mv * /the full path 

Par exemple, si vos fichiers et dossiers sont les suivants:

 /home/abcuser/test/1.txt 2.txt 3.jpg 4.php 1folder 2folder 

Accédez à ce dossier via le CD:

 cd /home/abcuser/test mv * /home/abcuser 

Tous vos fichiers et dossiers se déplacent vers le dossier abcuser (répertoire parent).

Passez au répertoire secondaire et exécutez la commande suivante pour copier ou déplacer des fichiers.

Ex: a est un répertoire parent et b est un sous-répertoire, nous voulons déplacer / copier tous les fichiers de b vers un (sous répertoire vers le répertoire parent).

 cd b cp * .. mv * ..