Tengo un montón de archivos en algún directorio (junto con muchos otros archivos) que quiero mover.
Afortunadamente, todos los archivos que quiero mover contienen un cierto identificador en sus nombres, por lo que puedo ls | grep IDENTIFIER
obtener la lista exacta de archivos para mover.
Pero, ¿cómo puedo ejecutar mv file /path/to/dest/folder/
de una vez, y no uno por uno (hay muchos archivos para mover)?
fuente
mv file1 file2 ... destination
ls
.Puedes usar comodines .
Ejemplo: para mover todos los archivos con extensión .doc
mv *.doc /path/to/dest/folder/
Esto moverá todos los archivos de documentos del directorio actual al destino específico.
Editar
Para responder el comentario.
mv *.ext *.xml *.txt /path/to/dest/folder/
fuente
ABC-IDENTIFIER-XYZ.ext
y algunos simplementeIDENTIFIER-XYZ.ext
tienen diferentes extensiones, en su mayoríaxml
oproperties
..xml
archivos (por ejemplo) que no quiero mover.En caso de que desee mover un conjunto de archivos irrelevantes (no hay un patrón común en los nombres y tipos), puede hacer lo que dijo el Sr. Rajanand: primero vaya al directorio que contiene los archivos que desea mover
En caso de que los archivos estén dispersos en diferentes directorios, solo necesita especificar la ruta para cada archivo en el comando mover
fuente
Utilizo la técnica de tuomaz, pero ligeramente modificada:
Encuentro esto más fácil de recordar y más difícil de arruinar, ya que utiliza el mismo orden que la operación mv de vainilla:
fuente
mv
no menciona una-t
opción.Usa este comando:
Sin embargo, ls no se recomienda para este tipo de uso. Use el comando find en su lugar.
fuente
ls
No se recomienda para este tipo de uso. Si desea enumerar archivos, especialmente con ungrep
reverso, úselofind . -name \*IDENTIFIER\*
.ls
Si tiene tantos archivos para mover, puede tener demasiados para el
mv
comando (u otros comandos comorm
). Sugiero usarxargs
para mover cada archivo individualmente en un bucle como la moda. Una forma de evitar eso es hacer:El
ls -1
(menos uno) asegura que solo haya un nombre de archivo en cada línea. Si tiene alias ocultos para ells
comando, puede tener varios nombres de archivo en una sola línea y mover inadvertidamente un archivo que no tenía la intención de mover.fuente
Si los archivos están en el mismo directorio, puede usar
(probado en Ubuntu 16.04)
fuente
Este comando moverá los nombres de archivo con cualquier patrón / rango al directorio de destino.
p.ej.
moverá archivos con nombres como
file1
,file2
...file50000
atarget-directory
.fuente
Puede usar la salida de ls para ingresar en mv commnad
mv $(ls | grep IDENTIFIER) /path/to/dest/dir
El comando en medio
$()
devuelve una lista de los nombres de archivo que coinciden con su búsqueda, y eso se puede proporcionar como un parámetro para el comando mv.fuente
ls
Usando este comando puedes mover múltiples archivos.
mv SourceFilenames ~DestinationPath
fuente
La forma más fácil es así
o directorio
o ambos archivos y directorios
Espero que esto ayude
fuente