Comment faire pour cp uniquement dans le dernier nom de directory?

mkdir test_dir test_dir1 test_dir2 test_dir3 touch file1 file2 file3 cp -v file* test_dir*/ 

Cette copy est seulement à test_dir3 et non dans test_dir, test_dir1, test_dir2. Pourquoi?

En fait, il ne copy que le dernier directory say test_dir4 et non dans aucun autre directotry (il les omet).

2 Solutions collect form web for “Comment faire pour cp uniquement dans le dernier nom de directory?”

Vous avez ces trois commands

 mkdir test_dir test_dir1 test_dir2 test_dir3 touch file1 file2 file3 cp -v file* test_dir*/ 

En supposant aucun autre file ou directory dans . Avant que l'exemple ne commence, les caractères generics dans cette dernière ligne sont ainsi développés:

 cp -v file1 file2 file3 test_dir/ test_dir1/ test_dir2/ test_dir3/ 

(Vous pouvez le voir en changeant cp pour echo cp et en observant le résultat.) Ce que vous ne nous avez pas dit, ce sont les messages de diagnostic produits par cp -v , qui montrent ce qu'il essaie de faire, c'est-à-dire copyr chaque élément sur la command line mais le dernier dans le dernier élément, qui doit donc être un directory:

 'file1' -> 'test_dir3/file1' 'file2' -> 'test_dir3/file2' 'file3' -> 'test_dir3/file3' cp: omitting directory 'test_dir/' cp: omitting directory 'test_dir1/' cp: omitting directory 'test_dir2/' 

Parce que les commands cp fonctionnent ainsi. Si elle a plus de 2 arguments, le dernier argument doit être un directory, et chaque argument avant celui-ci sera copié.

Je pense que vous voulez un cp qui se comporte beaucoup plus comme la command de copy Windows, et oui, il existe de tels outils, bien qu'ils ne soient pas largement utilisés. Même si je devais google pour ça.

Votre objective réel pourrait être facilement atteint par une simple boucle:

 for i in test_dir*; do cp -v test_file* $i; done 

Il est beaucoup plus simple, comme il semble le premier point. Bash est en fait un langage de programmation de base, et des loops ou des opérations encore plus complexes dans des commands à une seule ligne dans un environnement unix sont assez courantes.

  • Création d'un file iso sous Linux
  • cp -p conservera des time pour certains files mais pas pour tous?
  • RSYNC Slow / Copy uniquement des files modifiés?
  • Copie de file Linux avec ETA?
  • Quel est le message "trop ​​de liens" pour utiliser CP sur Linux?
  • reprendre copy de file linux
  • Copiez tous les files dans un autre location
  • Erreur de copy de file du système au support cifs
  • Ubuntu cp -p sur le pool ZFS monté
  • Copier le système de files entier dans un dossier où un réseau Raid-1 est monté
  • / bin / sh: / bin / cp: list d'argument trop longue
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.