varios renombrar para mover masivo eliminar directorio copiar comando archivos archivo linux mv

linux - renombrar - ¿Cómo usar el comando ''mv'' para mover archivos excepto aquellos en un directorio específico?



renombrar directorio linux (4)

Como find tiene una opción de exclusión, use find + xargs + mv:

find /source/directory -name ignore-directory-name -prune -print0 | xargs -0 mv --target-directory=/target/directory

Tenga en cuenta que esto está casi copiado de la página de búsqueda del manual (creo que usar mv --target-directory es mejor que cpio).

Me pregunto: ¿cómo puedo mover todos los archivos en un directorio, excepto esos archivos en un directorio específico (como ''mv'' no tiene una opción ''--excluir'')?


Esto moverá todos los archivos al directorio actual o por debajo del mismo, no en el directorio ./exclude/ a / donde sea ...

find -E . -not -type d -and -not -regex ''/./exclude/.*'' -exec echo mv {} /wherever /;


Esto no es exactamente lo que pediste, pero podría hacer el trabajo:

mv the-folder-you-want-to-exclude somewhere-outside-of-the-main-tree mv the-tree where-you-want-it mv the-excluded-folder original-location

(Esencialmente, mueva la carpeta excluida del árbol más grande para moverla).

Entonces, si tengo a/ y quiero excluir a/b/c/* :

mv a/b/c ../c mv a final_destination mkdir -p a/b mv ../c a/b/c

O algo así. De lo contrario, podría obtener ayuda para find .


Supongamos que es la estructura dir,

|parent |--child1 |--child2 |--grandChild1 |--grandChild2 |--grandChild3 |--grandChild4 |--grandChild5 |--grandChild6

Y necesitamos mover archivos para que parezca,

|parent |--child1 | |--grandChild1 | |--grandChild2 | |--grandChild3 | |--grandChild4 | |--grandChild5 | |--grandChild6 |--child2

En este caso, debe excluir dos directorios child1 y child1 , y mover el resto de los directorios al directorio child1 .

utilizar,

mv !(child1|child2) child1

Esto moverá todo el resto de los directorios al directorio child1 .