Ordenação de arquivos na linha de comando, copiando

0

copiado do meu terminal. . .

dan@Silver:/media/dan/RAID/MUSIC$ grep -r '.mp3' ./ > cp *.mp3 /home/dan/Music/
grep: input file ‘./cp’ is also the output

Eu tenho uma coleção de músicas em um volume NTFS que quero classificar e transfiro para uma nova configuração do Ubuntu. Os comandos acima foram planejados para pesquisar 6 ou 7 diretórios em profundidade ("cp -r" não) e copiar SOMENTE os arquivos que terminaram em .mp3.

Eu não tenho ideia do que o grep está falando. Alguma ajuda disponível para um novato?

    
por Dan 22.11.2014 / 15:59

3 respostas

1

A ferramenta de linha de comando certa para essa tarefa é find , por exemplo,

find -iname '*.mp3' -type f -execdir cp -t /home/dan/Music/ -- {} +

O teste -iname corresponderá a maiúsculas e minúsculas, ou seja, .MP3 e .mp3 - não tenho certeza se isso é importante nos sistemas de arquivos NTFS. Você poderia usar -name em vez disso.

    
por steeldriver 22.11.2014 / 16:13
0

Não sei ao certo o que você quer dizer sobre a classificação, a menos que queira alterar o layout do diretório, mas veja por que não está funcionando ...

Parte do problema é que usando '>' você está redirecionando a saída do comando grep para um arquivo chamado 'cp' em vez de usar um pipe '|' para o comando 'cp'.

No entanto, o maior problema é que o comando grep provavelmente nunca está retornando (ou talvez não retornando nada), já que você está usando grep -r '.mp3' ./ em vez de grep '.mp3' -r ./ Além disso, imagino que o grep esteja procurando por .mp3 no < em> conteúdo dos arquivos, em vez dos nomes dos arquivos .

tente:

cd /media/dan/RAID/MUSIC
find . -name '*.mp3'

se isso listar todos os arquivos que você deseja copiar, tente:

find . -name '*.mp3' -exec cp --parents "{}" /home/dan/Music \;

o --exec executa um comando para cada arquivo correspondido por find, o --parents preserva o caminho completo do arquivo (caso contrário, todos os arquivos seriam copiados para / home / dan / Music em vez de / home / dan / Music / subdir1, etc.), {} refere-se ao arquivo atualmente combinado. Eu coloquei aspas em torno dele porque arquivos de áudio geralmente têm espaços neles. o \; é como você termina o comando para --exec

Espero que isso ajude. Mesmo que não seja altamente recomendável, você procura na página man do find e, possivelmente, xargs, que são uma combinação poderosa onde você pode enviar a saída do find para xargs

    
por ckot 22.11.2014 / 17:19
0

Encontre o pacote de funções personalizadas do bash:

link

faça o download e instale o arquivo deb para sistemas baseados no debian.

Visão geral da funcionalidade

(1) Aplicativos abertos ----Raposa de fogo ----Calculadora ---- Configurações

(2) Gerenciar arquivos ----Procurar ----Navegar ---- Acesso rápido

            |----Select File(s)
            |----Inverse Selection
            |----Make directory
            |----Make file
                                          |----Open
                                          |----Copy
                                          |----Move
                                          |----Delete
                                          |----Rename
                                          |----Send to Device
                                          |----Properties

(3) Gerenciar telefone ---- Mover / Copiar do telefone ---- Mover / Copiar para o telefone ---- Pastas de sincronização

(4) Gerenciar USB ---- Mover / Copiar de USB ---- Mover / Copiar para USB

    
por KIRAN B 10.09.2018 / 16:41