Copia il contenuto / file in tutta la sottodirectory in una directory usando il terminale


17

Voglio copiare un file in tutte le sottocartelle in una cartella. Come posso farlo con la riga di comando?

Risposte:


26

Come mettere un file nella directory di lavoro corrente in tutte le sottocartelle (e forse le loro sottocartelle, a seconda di cosa si desidera fare)

Questo metterà il file in tutte le sottocartelle, ma non nelle loro sottocartelle:

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

Questo metterà il file water.txt(cambia tutte le istanze di water.txt nel nome del file che vuoi copiare) in tutte le sottocartelle e le relative sottocartelle

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

Informazioni da questo thread di domande su Linux


13

È possibile utilizzare quel one-liner:

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

limita la profondità a 1 -> solo le directory immediate

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


2
Questo fa ricorsivamente tutte le sottodirectory, non solo le sottodirectory immediate
Anake,

2
@Anake aggiornato la mia risposta
ortang

Questa risposta è eccellente!
Jinhua Wang,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.