¿Hay alguna manera de mv, cpo alguna operación de archivo, de modo que pueda especificar todos los archivos que no quiero que se vean afectados?
Por ejemplo, decir que tengo una carpeta con los archivos file1, file2y file3, y quiero mover file1y file2en alguna parte. En lugar de nombrar explícitamente los archivos para mover ( mv file1 file2 /path/to/destination), quiero nombrar los archivos para que no se muevan y hacer que todos los demás en la carpeta se muevan ( mv --some-switch file3 /path/to/destination)
command-line
rename
scp
Deslizamiento
fuente
fuente

mv file1 file2 /path/to/destinationeso no hará lo que quieres que hagaRespuestas:
Puede usar los patrones de globbing avanzados en algunos shells para hacer coincidir todos los archivos en un directorio, excepto los que coinciden con un patrón en particular. Por ejemplo, en ksh, bash o zsh, el comando
moverá todos los archivos
/sourcea/destinationexcepto los archivos que coincidan*.bak. En zsh, también puede escribir/source/^*.baksi se ejecuta por primera vezsetopt extended_glob, y de manera más general (una vez mássetopt extended_glob)/source/*~*.bak(o/source/a*~*.bakpara todos los archivos cuyo nombre comienza conaexcepción de los.bakarchivos, etc.).Zsh tiene un comando de copia / movimiento / enlace masivo que se puede utilizar, entre otros, para mover todos los archivos, excepto los que coinciden con un patrón. Por ejemplo, el siguiente comando mueve todos los archivos excepto
*.bakde/sourceatargety agrega.baka su nombre en el proceso:Hay varios comandos llamados
renameflotando. En Debian y Ubuntu,/usr/bin/renamees un script perl que mueve archivos a un nuevo nombre generado por una expresión perl. Puede excluir el cambio de nombre de los archivos al no generar un nuevo nombre si se va a excluir el archivo. Por ejemplo, el siguiente comando (usando esterenameprograma en particular ) mueve todos los archivos excepto*.bakde/sourcea/target:Puede usar el
findcomando para seleccionar los archivos que desea mover. Por ejemplo, el siguiente comando mueve todos los archivos normales excepto*.baken/sourceo un subdirectorio/target(tenga en cuenta que la estructura del directorio está contraída):o (más eficiente si hay muchos archivos para mover)
rsynces una generalizacióncpyscpcon reglas de inclusión / exclusión muy potentes. Por ejemplo, el siguiente comando copia todos los archivos excepto*.baken/sourceo un subdirectorio/target, respetando la estructura del directorio:paxes (entre otras cosas) otrocpcon esteroides. Sus reglas de exclusión no son tan poderosas como las de rsync, pero tiene la capacidad adicional de cambiar el nombre de los archivos a medida que se copian. Si cambia el nombre de un archivo a la cadena vacía, se excluye de la copia. Por ejemplo, el siguiente comando copia todos los archivos excepto*.baken/sourceo un subdirectorio en/target, y cambia el nombre de los archivos de.bakpasada.El ejemplo anterior tiene el desafortunado efecto secundario de crear directorios llamados
foo.bak, que se pueden evitar combinandofindconpax:fuente
findcomando debe terminar en\;+inmediatamente después{}.