GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo mover todos los archivos (incluidos los ocultos) de un directorio a otro?

¿Cómo muevo todos los archivos de un directorio (incluidos los ocultos) a otro directorio?

Por ejemplo, si tengo una carpeta "Foo" con los archivos ".hidden" y "notHidden" adentro, ¿cómo muevo ambos archivos a un directorio llamado "Bar"? Lo siguiente no funciona, ya que el archivo ".hidden" permanece en "Foo".

mv Foo/* Bar/

Pruébelo usted mismo.

mkdir Foo
mkdir Bar
touch Foo/.hidden
touch Foo/notHidden
mv Foo/* Bar/

Respuesta aceptada:

Zsh

mv Foo/*(DN) Bar/

o

setopt -s glob_dots
mv Foo/*(N) Bar/

(Omita el (N) si sabe que el directorio no está vacío.)

Golpe

shopt -s dotglob nullglob
mv Foo/* Bar/

Ksh93

Si sabe que el directorio no está vacío:

FIGNORE='.?(.)'
mv Foo/* Bar/

Estándar (POSIX) sh

for x in Foo/* Foo/.[!.]* Foo/..?*; do
  if [ -e "$x" ]; then mv -- "$x" Bar/; fi
done

Si está dispuesto a dejar que el mv el comando devuelve un estado de error aunque tuvo éxito, es mucho más simple:

mv Foo/* Foo/.[!.]* Foo/..?* Bar/

búsqueda de GNU y mv de GNU

find Foo/ -mindepth 1 -maxdepth 1 -exec mv -t Bar/ -- {} +

Búsqueda estándar

Si no le importa cambiar al directorio de origen:

cd Foo/ &&
find . -name . -o -exec sh -c 'mv -- "[email protected]" "$0"' ../Bar/ {} + -type d -prune

Aquí hay más detalles sobre cómo controlar si los archivos de puntos coinciden en bash, ksh93 y zsh.

Golpe

Establecer el dotglob opción.

$ echo *
none zero
$ shopt -s dotglob
$ echo *
..two .one none zero

También está el GLOBIGNORE más flexible variable, que puede establecer en una lista separada por dos puntos de patrones comodín para ignorar. Si no está configurado (la configuración predeterminada), el shell se comporta como si el valor estuviera vacío if dotglob está establecido, y como si el valor fuera .* si la opción no está configurada. Consulte Expansión de nombre de archivo en el manual. Los directorios omnipresentes . y .. siempre se omiten, a menos que . coincide explícitamente con el patrón.

$ GLOBIGNORE='n*'
$ echo *
..two .one zero
$ echo .*
..two .one
$ unset GLOBIGNORE
$ echo .*
. .. ..two .one
$ GLOBIGNORE=.:..
$ echo .*
..two .one

Ksh93

Establecer el FIGNORE variable. Si no está configurado (la configuración predeterminada), el shell se comporta como si el valor fuera .* . Para ignorar . y .. , deben coincidir explícitamente (el manual en ksh 93s+ 2008-01-31 establece que . y .. siempre se ignoran, pero esto no describe correctamente el comportamiento real).

$ echo *
none zero
$ FIGNORE='@(.|..)'
$ echo *
..two .one none zero
$ FIGNORE='n*'
$ echo *
. .. ..two .one zero

Puede incluir archivos de puntos en un patrón haciéndolos coincidir explícitamente.

$ unset FIGNORE
$ echo @(*|.[^.]*|..?*)
..two .one none zero

Para que la expansión salga vacía si el directorio está vacío, usa N opción de coincidencia de patrones:~(N)@(*|.[^.]*|..?*) o ~(N:*|.[^.]*|..?*) .

Zsh

Establecer el dot_glob opción.

% echo *
none zero
% setopt dot_glob
% echo *
..two .one none zero

. y .. nunca coinciden, incluso si el patrón coincide con el . inicial explícitamente.

% echo .*
..two .one

Puede incluir archivos de puntos en un patrón específico con la D calificador global.

% echo *(D)
..two .one none zero

Agrega el N calificador glob para que la expansión salga vacía en un directorio vacío:*(DN) .

Nota:puede obtener resultados de expansión de nombre de archivo en diferentes órdenes
(p. ej., none seguido de .one seguido de ..two )
según la configuración de LC_COLLATE , LC_ALL y LANG variables.

Relacionado:¿Consultar la lista de servidores para la memoria/cpu asignada?
Linux
  1. Mover todos los archivos excepto uno

  2. Cómo copiar una tabla de una base de datos mysql a otra base de datos mysql

  3. ¿Cómo mover (y sobrescribir) todos los archivos de un directorio a otro?

  4. Cómo mover todos los archivos, incluidos los archivos ocultos, al directorio principal a través de *

  5. ¿Cómo mover todos los archivos del directorio actual al directorio superior?

Cómo encontrar y copiar cierto tipo de archivos de un directorio a otro en Linux

¿Cómo copiar un archivo de otro directorio al actual?

¿Cómo mover archivos de una cuenta de usuario a otra en la misma computadora?

¿Cómo mover todos los archivos fuente de Java a su directorio de paquetes respectivo?

¿Cómo bajar un directorio?

¿Cómo mover cuentas de un servidor cPanel a otro servidor cPanel?