Convertendo o lote do Windows para o script Linux (Lote criar links simbólicos pelo primeiro caractere)

0

Como noob para Linux e scripts, não tenho certeza de como converter isso em um script linux ou mesmo por onde começar. Essencialmente eu quero criar um script que crie pastas alfabetizadas A-Z, vincule simbolicamente todas as pastas em um diretório a um diretório A-Z classificado recém-criado para que os filmes que começam com A como Appleseed fiquem sob a pasta A. * note que tentei executar esse bastão no wine mas o mklink não existe e não funcionaria tão bem.

::Make folders with each letter of the alphabet under the "categorized" folder if not already created
For %%M in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (mkdir "C:\My Videos\Categorized\"%%M)
::Does a directory search matching every letter A-Z and creates a output file listing each folder beginning with that letter 
For %%N in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do ((Dir "G:\My Videos\Movies\"%%N* /b) >> "C:\My Videos\List\%%N.lst") 
::Uses the previously created files to create symlinks of each line in the listed files into the alphabatized folders each A-Z folders
For %%O in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (For /F "usebackq delims==" %%P in ("C:\My Videos\List\%%O.lst") do (mklink /d  "G:\My Videos\Categorized\%%O\%%P" "G:\My Videos\Movies\%%P"))
    
por Thomas 12.10.2013 / 02:27

1 resposta

2

Aqui vai você. A sintaxe é surpreendentemente muito semelhante. Eu encurtei a lista do alfabeto com .. mas você poderia listá-lo se quiser e ainda funcionaria. Não tenho certeza se sua caixa * nix vai ficar feliz com esses caminhos de arquivo.

#Make folders with each letter of the alphabet under the "categorized" folder if not already created
for M in {A..Z}; do mkdir "C:\My Videos\Categorized\${M}"; done;
#Does a directory search matching every letter A-Z and creates a output file listing each folder beginning with that letter 
for N in {A..Z}; do ls "G:\My Videos\Movies\${N}"* >> "C:\My Videos\List\${N}.lst"; done;
#Uses the previously created files to create symlinks of each line in the listed files into the alphabatized folders each A-Z folders
for O in {A..Z}; do for P in $(cat "C:\My Videos\List\${O}.lst"); do ln -s  "G:\My Videos\Categorized\${O}\${P}" "G:\My Videos\Movies\${P}"; done; done;
#This alternate version for the last line correctly deals with whitespace in your filenames
for O in {A..Z}; do 
    while read P; do 
        ln -s  "G:\My Videos\Categorized\${O}\${P}" "G:\My Videos\Movies\${P}";
    done < "C:\My Videos\List\${O}.lst";
done;
    
por 12.10.2013 / 06:19