Mover arquivos para diretórios com base no nome do arquivo

2

Eu tenho arquivos que baixam para um diretório ( /media/Downloads/Complete/Movies ), mas preciso de um script bash que os mova para o diretório de destino com base no nome do arquivo ( /media/Movies_A & amp; /media/Movies_B )

Exemplo:

/media/Downloads/Complete/Movies/Frozen.mkv ---> /media/Movies_A/

Movies with titles A-M go to /media/Movies_A
Movies with titles N-Z go to /media/Movies_B

Eu também preciso que ele ignore "o" (o terreno antes do tempo) iria para /media/Movies_A/The Land Before Time .

Alguém por favor pode ajudar?

    
por Justin Doshay 14.10.2014 / 20:02

1 resposta

3

Isso provavelmente é o suficiente:

cp /media/Downloads/Complete/Movies/[tT]he[\ .][A-Ma-m]* /media/Movies_A/ 
cp /media/Downloads/Complete/Movies/[tT]he[\ .][N-Zn-z]* /media/Movies_B/
cp /media/Downloads/Complete/Movies/[A-Ma-m]* /media/Movies_A/ 
cp /media/Downloads/Complete/Movies/[N-Zn-z]* /media/Movies_B/

Eu usei cp para que você possa refazer quantas vezes quiser.

O [] no comando faz dele uma coleção de letras. O \ é escapar do espaço. O [\ .] corresponde a um espaço ou a . , portanto você também copiará The land e the.land e nomes semelhantes corretamente.

Dica: Se você soltar o primeiro [e digitar um t ou T e pressionar TAB (duas vezes?), ele mostrará todos os arquivos incluídos. Se você fizer um backspace e adicionar o [novamente, você sabe que está no caminho certo.

    
por Rinzwind 14.10.2014 / 20:10