Basta copiar vários arquivos de uma vez da linha de comando
Existem várias maneiras de conseguir isso. O mais fácil que vi é usar o seguinte.
cp /home/usr/dir/{file1,file2,file3,file4} /home/usr/destination/
A sintaxe usa o comando cp seguido pelo caminho para o diretório onde os arquivos desejados estão localizados, com todos os arquivos que você deseja copiar, agrupados entre parênteses e separados por vírgulas.
Lembre-se de que não há espaços entre os arquivos. A última parte do comando, /home/usr/destination/
, é o diretório no qual você deseja copiar os arquivos.
ou se todos os arquivos tiverem o mesmo prefixo, mas diferentes finais, você poderá fazer algo assim:
cp /home/usr/dir/file{1..4} ./
Em que file1, file2, file3 e file4 seriam copiados.
De como você redigiu a pergunta Eu acredito que é isso que você está procurando, mas também parece que você pode estar procurando por um comando para ler a partir de uma lista de arquivos e copiar todos eles para um determinado diretório. Se for esse o caso, deixe-me saber e eu vou editar a minha resposta.
Lidando com duplicatas com python
Então eu escrevi um pequeno script python que acredito que deveria fazer o trabalho. No entanto, eu não tenho certeza de quão bem versado você é em python (se for versado em tudo), então vou tentar explicar como usar este script da melhor maneira possível e, por favor, faça quantas perguntas forem necessárias.
import os,sys,shutil
### copies a list of files from source. handles duplicates.
def rename(file_name, dst, num=1):
#splits file name to add number distinction
(file_prefix, exstension) = os.path.splitext(file_name)
renamed = "%s(%d)%s" % (file_prefix,num,exstension)
#checks if renamed file exists. Renames file if it does exist.
if os.path.exists(dst + renamed):
return rename(file_name, dst, num + 1)
else:
return renamed
def copy_files(src,dst,file_list):
for files in file_list:
src_file_path = src + files
dst_file_path = dst + files
if os.path.exists(dst_file_path):
new_file_name = rename(files, dst)
dst_file_path = dst + new_file_name
print "Copying: " + dst_file_path
try:
shutil.copyfile(src_file_path,dst_file_path)
except IOError:
print src_file_path + " does not exist"
raw_input("Please, press enter to continue.")
def read_file(file_name):
f = open(file_name)
#reads each line of file (f), strips out extra whitespace and
#returns list with each line of the file being an element of the list
content = [x.strip() for x in f.readlines()]
f.close()
return content
src = sys.argv[1]
dst = sys.argv[2]
file_with_list = sys.argv[3]
copy_files(src,dst,read_file(file_with_list))
Esse script deve ser relativamente simples de usar. Primeiro, copie o código acima no programa gedit (deve estar pré-instalado no Ubuntu) ou em qualquer outro editor de texto.
Depois disso, salve o arquivo como move.py no seu diretório pessoal (pode ser qualquer diretório, mas para facilidade de instrução permite usar apenas o diretório pessoal) ou adicione o diretório ao arquivo está contido no seu PATH. Então cd
para o seu diretório home (ou qualquer diretório que você salvou move.py) do terminal e digite o seguinte comando:
python move.py /path/to/src/ /path/to/dst/ file.txt
Isso deve copiar todos os arquivos que estão listados no diretório de origem para o diretório de destino com duplicatas, tirando o formato pic (1) .jpg, pic (2) .jpg e assim por diante. file.txt deve ser um arquivo que lista todas as imagens que você gostaria de copiar com cada entrada em sua própria linha separada.
De modo algum este script deve afetar o diretório de origem, no entanto, apenas certifique-se de inserir os caminhos corretos para o diretório de origem e destino e o pior que pode acontecer é copiar os arquivos para o diretório errado.
Notas
- Este script pressupõe que todas as imagens originais estão no mesmo diretório. Se você quiser verificar sub-diretórios, bem como o script precisará ser modificado.
- Se você digitar acidentalmente um nome de arquivo, o script irá gerar o erro. "arquivo não existe" e solicita que você "pressione enter" para continuar e o script continuará copiando o restante da lista.
- Não se esqueça do rastreio
/
no caminho para a origem
diretório e caminho para o diretório de destino. Caso contrário, o roteiro vai cuspir um erro de volta para você.
Espero que isso ajude!