web-dev-qa-db-fra.com

Comment copier des fichiers du dossier sans le dossier lui-même

J'essaie de copier des fichiers et des sous-dossiers à partir du dossier A sans le A lui-même . Par exemple, UN DOSSIER contient ensuite:

| file1.txt   
| file2.txt    
| subfolder1   

L'exécution de la commande suivante me donne un mauvais résultat:

Sudo cp -r /home/username/A/ /usr/lib/B/

Le résultat est

/usr/lib/B/A/...copied files...

au lieu de..

/usr/lib/B/...copied files...

Comment puis-je atteindre celui attendu sans dossier d'origine

48
pushandpop

cp avancé

cp -r /home/username/A/. /usr/lib/B/

C'est particulièrement bien car cela fonctionne, que le répertoire cible existe déjà ou non.

obstruction de coque

S'il n'y a pas trop d'objets dans le répertoire, vous pouvez utiliser la globalisation Shell:

mkdir -p /usr/lib/B/
shopt -s dotglob
cp -r /home/username/A/* /usr/lib/B/

rsync

rsync -a /home/username/A/ /usr/lib/B/

Le / à la fin du chemin source est important; fonctionne peu importe si le répertoire cible existe déjà.

trouver

mkdir -p /usr/lib/B/
find /home/username/A/ -mindepth 1 -maxdepth 1 -exec cp -r -t /usr/lib/B/ {} +

ou si vous n'avez pas besoin de sous-répertoires vides:

find /home/username/A/ -mindepth 1 -type f -exec cp --parents -t /usr/lib/B/ {} +

(sans mkdir)

80
Hauke Laging

Si sur un système GNU, depuis man cp:

   -T, --no-target-directory
          treat DEST as a normal file

Cela vous permet d'écrire cp -rT /home/username/A/ /usr/lib/B/ pour faire exactement la bonne chose.

12
michas

Dites à cp de copier le contenu du répertoire et non le répertoire lui-même:

Sudo cp -r /home/username/A/* /usr/lib/B/
3
terdon