command-line – ¿Cómo puedo hacer que mv (o el comodín *) mueva archivos ocultos?

Pregunta:

Estoy migrando mi directorio personal de un sistema antiguo a uno nuevo, y el tarball que hice contiene todo, incluidos archivos ocultos como .bashrc. Sin embargo, cuando muevo el contenido del tarball descomprimido (que está en / tmp) a mi nuevo directorio de inicio, los archivos ocultos no se copian ( mv /tmp/home/rcook/* /home/rcook/ ). ¿Cómo puedo hacer que mv los mueva?

En realidad, creo que el problema no está en mv, sino en el globbing de bash. Si hago esto:

mkdir a
mkdir b
touch a/.foo
touch a/bar
mv a/* b/
ls -a a/ b/

Veo esto:

a/:
.  ..  .foo

b/:
.  ..  bar

a/.foo no se movió. Entonces, ¿cómo puedo obtener el comodín * para encontrar archivos ocultos?

Sí, supongo que podría descomprimir el tarball directamente en mi directorio de inicio, pero el tarball se descomprime en home/rcook/... , y quiero asegurarme de sobrescribir el nuevo .bashrc , etc. con las versiones antiguas y personalizadas, y saber cómo encontrar y mover archivos ocultos es una habilidad que vale la pena. Sugerencias?


Algunas respuestas sugieren hacer algo como mv src/.* dest/ . Sin embargo, probé esto en mis directorios de prueba y obtuve errores. Empezando con:

rcook$ ls -a a/ b/
a/:
.  ..  bar  .foo

b/:
.  ..
rcook$ mv a/.* b/
mv: cannot move 'a/.' to 'b/.': Device or resource busy
mv: cannot remove 'a/..': Is a directory
rcook$ ls -a a/ b/
a/:
.  ..  bar

b/:
.  ..  .foo

¿Qué estoy haciendo mal?

Respuesta:

Puedes hacerlo :

shopt -s dotglob
mv /tmp/home/rcook/* /home/rcook/

Puedes poner

shopt -s dotglob

en tu ~/.bashrc si quieres que sea el predeterminado.

Ver http://mywiki.wooledge.org/glob


Otro enfoque para copiar los archivos dot:

mv /tmp/home/rcook/.[!.]* /home/rcook/

No utilice el patrón ..* ya que coincide .. (puntero al directorio principal). Si hay archivos cuyo nombre comienza con dos puntos ( ..something ), utilice también el patrón ..?* .

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım