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
.