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
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
)
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.
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/