Будучи новичком в Linux и написании сценариев, я не уверен, как преобразовать это в сценарий Linux или даже с чего начать. По сути, я хочу создать сценарий, который создает алфавитные папки AZ, символическую ссылку на все папки в каталоге на вновь созданный отсортированный каталог AZ, чтобы фильмы, начинающиеся с A, например Appleseed, находились в папке A. * заметьте, я пытался просто запустить эту летучую мышь в вине, но mklink не существует и не будет работать так хорошо.

::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"))

1 ответ1

2

Ну вот. Синтаксис на удивление очень похож. Я сократил список алфавита с помощью ... но вы можете перечислить его, если хотите, и он все равно будет работать. Я не уверен, что ваш * nix box будет доволен этими путями к файлам.

#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;

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .