15 votos

Copiar el contenido del directorio actual a un subdirectorio

¿Cómo puedo usar la terminal de Linux para copiar todo en el directorio actual a un subdirectorio?

13voto

user47108 Puntos 51

Si desea copiar el contenido de la carpeta de forma recursiva (arrojará 1 error, alternativas a continuación):

 cp -r * sub/

Un poco más hacky, pero funciona en subdirectorios no vacíos:

 TARGETDIR='targetdir here';cp -r `find . -maxdepth 1 ! -name "$TARGETDIR"` "$TARGETDIR"

Otro delineador:

 TARGETDIR='targetdir here';for file in *;do test "$file" != "$TARGETDIR" && cp "$file" "$TARGETDIR/";done

O recursivo:

 TARGETDIR='z';for file in *;do test "$file" != "$TARGETDIR" && cp -r "$file" "$TARGETDIR/";done

4voto

Gilles Puntos 37591

Suponiendo que target es el nombre del subdirectorio de destino, si su shell es bash:

 shopt -s extglob
cp -r !(target) target/

En ksh, puede hacer directamente cp -r !(target) target/ .

En zsh, puede hacer setopt ksh_glob luego cp -r !(target) target/ . Otra posibilidad es setopt extended_glob luego cp -r ^target target/ .

3voto

Sugeriría mover el directorio de destino fuera del directorio de origen y luego volver a colocarlo; mv es gratuito (si tiene cuidado de no pasar a un sistema de archivos diferente), a menos que espere que otros procesos interfieran o sean interferidos.

La mayoría de las soluciones publicadas anteriormente no funcionarán si hay espacios en los nombres de los archivos. Sugeriría usar variantes de find -print0 | xargs -0, o busque -exec, etc.

0voto

karlphillip Puntos 718

Funcionara para ti?

 cp -r * subdir/

Si quisiera mover en lugar de copiar todo en el directorio actual a un subdirectorio, podría hacer:

 mv * subdir/

-1voto

Nodir Puntos 56

Esto va en el archivo dirCopy.sh

 

for i in `ls`
do
        if [ $i != "subDir" ]
        then
                `cp -r $i subDir`
        fi
done

ejecútelo como "sh dirCopy.sh" en su consola

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: