GNU/Linux >> Tutoriales Linux >  >> Linux

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

Dado que 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 casi se copia de la página de manual de búsqueda (creo que usar mv --target-directory es mejor que cpio).


Supongamos que la estructura de directorios es como,

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

Y necesitamos mover los archivos para que aparezcan como,

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

En este caso, debe excluir dos directorios child1 y child2 y mueva el resto de los directorios a child1 directorio.

usar,

mv !(child1|child2) child1

Esto moverá el resto de los directorios a child1 directorio.


Esto no es exactamente lo que pediste, pero podría funcionar:

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 fuera 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, es posible que pueda obtener find para ayudarte.


Primero obtenga los nombres de los archivos y carpetas y excluya los que desee:

ls --ignore=file1 --ignore==folder1 --ignore==regular-expression1 ...

Luego pase los nombres filtrados a mv como primer parámetro y el segundo parámetro será el destino:

mv $(ls --ignore=file1 --ignore==folder1 --ignore==regular-expression1 ...) destination/

Linux
  1. Cómo usar el comando Grep para buscar texto en archivos

  2. ¿Cómo usar Inotifywait para ver un directorio para la creación de archivos de una extensión específica?

  3. Cómo usar el comando find de Linux para buscar archivos

  4. Cómo usar el comando rpm2cpio en Linux

  5. ¿Cómo usar el comando 'cp' para excluir un directorio específico?

Cómo usar el comando SCP para transferir archivos

Cómo usar el comando cd en Linux

Cómo mover un directorio en Linux

Cómo listar archivos recursivamente en Linux

Cómo contar archivos en el directorio en Linux

Cómo contar el número de archivos en un directorio en Linux