2011-04-20 10:24:10 +0000 2011-04-20 10:24:10 +0000
79
79

Déplacer des fichiers et des dossiers récursivement sur Linux

Considérez :

ls -al ../public-back
drwxrwxr-x 4 apache apache 4096 Apr 19 03:32 templates

ls -al ../public-back/templates

drwxrwxr-x 2 apache apache 4096 Apr 19 03:33 content
drwxrwxr-x 2 apache apache 20480 Apr 20 06:14 images
drwxrwxr-x 2 apache apache 4096 Apr 19 03:35 video

ls -al /public

drwxrwxr-x 4 apache apache 4096 Apr 20 09:49 templates

ls -al /public/templates

drwxrwxr-x 2 apache apache 4096 Apr 20 09:50 content
drwxrwxr-x 2 apache apache 4096 Apr 20 09:50 images
drwxrwxr-x 2 apache apache 4096 Apr 20 09:50 video

Comment puis-je déplacer le contenu de /public-back/templates récursivement avec des permissions dans /public/templates ?

Réponses (5)

97
97
97
2011-04-20 14:10:36 +0000

A moins que je ne comprenne mal la question, cela fonctionnerait :

mv /public-back/templates/* /public/templates

Aussi, à moins que vous n'ayez une énorme liste de fichiers, ajouter -i demandera avant d'écraser quoi que ce soit, ce qui ajoute une certaine sécurité lorsque vous utilisez des jokers comme *.

10
10
10
2011-04-20 14:24:07 +0000

La page d'accueil du PC indique :

-p same as --preserve=mode,ownership,timestamps
-r same as --recursive=copy directories recursively

Try ;

cp -rp /public-back/templates/* /public/templates/
5
5
5
2016-02-17 07:43:21 +0000

Lorsque je déplace des éléments de ma clé USB vers mon système OSMC, j'ai trouvé les éléments suivants très utiles :

find /media/Pi\ Hard\ 16GB/ -name '*' -exec mv -v {} /media/External\ HDD/Videos/ \;

Explication du fonctionnement ci-dessous.

BTW, N'oubliez pas d'ajouter une barre oblique inversée avant tout espace dans les noms des répertoires source ou destination (voir ci-dessus). En fait, vous trouvez tous les fichiers et tous les dossiers et vous les déplacez un par un (ou si un répertoire est trouvé en premier, vous déplacez ce répertoire et son contenu). Cela lance un nouveau processus pour chaque déplacement et est très inefficace. N'utilisez cette méthode que lorsque les commandes habituelles échouent.

2
2
2
2017-09-06 07:05:14 +0000

mv" ne fonctionnera tout simplement pas dans votre cas, et ne fonctionne en général que lorsque le répertoire source et le répertoire dest n'ont pas de sous-arbres communs.

Notez que je suppose que le mot “move” dans la question signifie que le répertoire source doit disparaître après l'opération.

2
2
2
2015-10-20 15:24:37 +0000

mv ne semble pas faire cela. Mais vous pouvez utiliser cette petite astuce, qui fonctionne comme un charme :

tar cf - . |(cd /targetdir; tar xvf -)

et préserve les autorisations et tout.

Note : rien de ce qui précède n'a fonctionné pour moi, c'est pourquoi ce contournement.