Eu tenho vários arquivos em algum diretório (junto com muitos outros arquivos) que quero mover.
Felizmente, todos os arquivos que quero mover contêm um determinado identificador em seus nomes, para que eu possa ls | grep IDENTIFIER
obter a lista exata de arquivos a serem movidos.
Mas como posso executar de mv file /path/to/dest/folder/
uma só vez, e não um por um (há muitos arquivos para mover)?
fonte
mv file1 file2 ... destination
ls
.Você pode usar curingas .
Exemplo: Para mover todos os arquivos com extensão .doc
mv *.doc /path/to/dest/folder/
Isso moverá todo o arquivo doc no diretório atual para o destino específico.
Editar
Para responder ao comentário.
mv *.ext *.xml *.txt /path/to/dest/folder/
fonte
ABC-IDENTIFIER-XYZ.ext
e algunsIDENTIFIER-XYZ.ext
têm extensões diferentes, principalmentexml
ouproperties
..xml
arquivos (por exemplo) que eu não quero mover.Caso deseje mover um conjunto de arquivos irrelevantes (sem padrão comum nos nomes e tipos), você pode fazer o que o Sr. Rajanand disse: primeiro, vá para o diretório que contém os arquivos que deseja mover
Caso os arquivos estejam espalhados em diretórios diferentes, você só precisará especificar o caminho para cada arquivo no comando move
fonte
Eu uso a técnica de tuomaz, mas ligeiramente modificada:
Acho isso mais fácil de lembrar e mais difícil de estragar, pois usa a mesma ordem da operação vanilla mv:
fonte
mv
não menciona uma-t
opção.Use este comando:
No entanto, ls não é recomendado para esse tipo de uso. Use o comando find em seu lugar.
fonte
ls
não é recomendado para esse tipo de uso. Se você deseja listar arquivos, especialmente com umgrep
behind, usefind . -name \*IDENTIFIER\*
.ls
Se você tiver tantos arquivos para mover, poderá ter muitos para o
mv
comando (ou outros comandos comorm
). Sugiro usarxargs
para mover cada arquivo individualmente em um loop como moda. Uma maneira de contornar isso é:O
ls -1
(menos um) garante que haja apenas um nome de arquivo em cada linha. Se você tiver aliases ocultos para ols
comando, poderá ter vários nomes de arquivos em uma única linha e mover inadvertidamente um arquivo que não pretendia mover.fonte
Se os arquivos estiverem no mesmo diretório, você poderá usar
(testado no Ubuntu 16.04)
fonte
este comando moverá nomes de arquivos com qualquer padrão / intervalo para o diretório de destino.
por exemplo.
ele moverá arquivos com nomes como
file1
,file2
...file50000
paratarget-directory
.fonte
Você pode usar a saída de ls para inserir no mv commnad
mv $(ls | grep IDENTIFIER) /path/to/dest/dir
O comando between
$()
retorna uma lista dos nomes de arquivos correspondentes à sua pesquisa e que podem ser fornecidos como parâmetro para o comando mv.fonte
ls
Usando este comando, você pode mover vários arquivos.
mv SourceFilenames ~DestinationPath
fonte
A maneira mais fácil é assim
ou diretório
ou ambos os arquivos e diretórios
Espero que isto ajude
fonte