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?

22lk94k943 uniquement
la source

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

Encore un autre utilisateur
la source
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> {} \;

ortang
la source
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