Copier des fichiers d'un répertoire dans un répertoire existant
En bash j'ai besoin pour ce faire:
-
prendre tous les fichiers dans un répertoire
-
les copier dans un répertoire existant
Comment dois-je faire? J'ai essayé cp -r t1 t2
(t1 et t2 sont les répertoires existants, t1 a des fichiers) mais il a créé un répertoire appelé t1 à l'intérieur de t2, je n'en veux pas, j'ai besoin de fichiers en t1 pour aller directement à l'intérieur t2. Comment puis-je faire cela?
- Pourquoi en était-il fermé? Il est arbitraire si une commande bash est un intégré ou externe de commande (par exemple printf existe à la fois comme sur la plupart des systèmes), de sorte
cp
questions peut bien être vu commebash
questions, qui est un langage de programmation. Je n'ai jamais vu un Python question de parler de copie de fichier soit fermé. - Jetez un oeil à cette stackoverflow.com/questions/23698183/...
- Je suis arrivé à la recherche d'un rappel sur la syntaxe du shell Bash commande de copie, et je suis heureux de signaler que ces commandes semblent également à l'encontre de la sous-tendent le système de fichiers NTFS sur mon installation de Windows.
Vous devez vous connecter pour publier un commentaire.
Ce que vous voulez, c'est:
Le point à la fin lui dit de copier le contenu du répertoire en cours, et non pas le répertoire lui-même. Cette méthode comprend également les fichiers et dossiers cachés.
mv
. Quelqu'un sait-il pourquoi?Si vous souhaitez copier quelque chose à partir d'un répertoire dans la actuel répertoire, faites ceci:
Cela suppose que vous n'êtes pas essayer de copier les fichiers cachés.
Ou si vous avez des répertoires à l'intérieur dir1 que vous voulez copier en tant que bien
dir1/.*
n'est pas une bonne idée, car il copie dir1/.. (c'est à dire le parent du répertoire que vous êtes en train d'essayer de copie). Il copie également dir1/. ce qui est bien, sauf qu'il est déjà (presque) été copié, de sorte que vous êtes en train de faire le travail deux fois.dir1/.*
/fichiers cachés problème par cd-ing dans le répertoire que vous souhaitez copier, puis se référant à lui comme.
. Donc, si vous souhaitez copier tous les fichiers y compris les fichiers cachés à partir d'un répertoire dans un répertoire existant, vous pouvez:cd [source dir]
,cp . [path to destination dir, with no trailing slash]
.En supposant que t1 est le dossier avec les fichiers qu'il contient, et t2 est le répertoire vide. Ce que vous voulez, c'est quelque chose comme ceci:
Garder à l'esprit, pour le premier exemple, t1 et t2 doivent être les chemins complets, ou des chemins relatifs (fonction de l'endroit où vous êtes). Si vous le souhaitez, vous pouvez naviguer vers le dossier vide (t2) et de le faire:
Ou vous pouvez naviguer vers le dossier avec les fichiers (t1) et de le faire:
Remarque: Le symbole * (ou joker) remplace tous les fichiers et dossiers. Le -R drapeau signifie de manière récursive (tout à l'intérieur de tout).
Oblique sur le répertoire source de la sémantique légèrement, de sorte qu'il copie le contenu mais pas le répertoire lui-même. Il évite aussi les problèmes de l'expansion et des fichiers invisibles, que Bertrand de réponse (copie
t1/*
manque des fichiers invisibles, la copie t1/* t1/.*' des copies t1/. et t1/.., que vous ne voulez pas).$ mkdir t1
$ mkdir t2
$ touch t1/one
$ touch t1/two
$ touch t1/.three
$ cp -R t1/ t2
$ ls t2/
t1
(désolé, pas de codeformat dans les commentaires, version lisible à l'adresse pastebin.com/yszSxV6G)Selon certains détails que vous pourriez avoir besoin de faire quelque chose comme ceci:
... au fond, les changements dans le répertoire SRC et la copie de la cible, puis revient à où jamais vous avez commencé.
Le supplément de plaisanter est de gérer relative ou absolue des cibles.
(Ce qui ne repose pas sur de subtils de la sémantique de la
cp
de commande lui-même ... au sujet de la façon dont il traite de la source de spécifications avec ou sans fuite /... puisque je ne suis pas sûr que ceux qui sont stables, portable et fiable au-delà de juste GNUcp
et je ne sais pas si ils vont continuer de l'être dans le futur).Pour l'intérieur d'un répertoire, ce sera l'utilisation pleine qu'elle copie tout le contenu de "dossier1" à nouveau répertoire "dossier2" à l'intérieur d'un répertoire.
$(pwd) va se chemin pour le répertoire courant.
Avis le point (.) après folder1 pour obtenir tous les contenus à l'intérieur de folder1