Copiez le contenu / fichier dans tous les sous-répertoires d'un répertoire à l'aide du terminal


17

Je souhaite copier un fichier dans tous les sous-dossiers d'un dossier. Comment puis-je faire cela avec la ligne de commande?

Réponses:


26

Comment mettre un fichier dans le répertoire de travail actuel dans tous les sous-dossiers (et peut-être leurs sous-dossiers, selon ce que vous voulez faire)

Cela mettra le fichier dans tous les sous-dossiers, mais pas dans leurs sous-dossiers:

for d in */; do cp water.txt "$d"; done

Cela mettra le fichier water.txt(changez toutes les instances de water.txt en nom de fichier que vous souhaitez copier) dans tous les sous-dossiers et leurs sous-dossiers

for i in ./* # iterate over all files in current dir
do
    if [ -d "$i" ] # if it's a directory
    then
        cp water.txt "$i" # copy water.txt into it
    fi
done

Informations de ce fil de linuxquestions


13

Vous pouvez utiliser ce one-liner:

find <target-dir> -type d -exec cp <the file> {} \;

limiter la profondeur à 1 -> uniquement les répertoires immédiats

find <target-dir> -type d -maxdepth 1 -exec cp <the file> {} \;


2
Cela fait tous les sous-répertoires récursivement, pas seulement les sous
Anake

2
@Anake a mis à jour ma réponse
ortang le

Cette réponse est excellente!
Jinhua Wang
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.