Chuyển đổi lô Windows sang tập lệnh Linux (Batch tạo các liên kết tượng trưng theo ký tự đầu tiên)


0

Là một người không biết đến Linux và viết kịch bản, tôi không chắc chắn làm thế nào để chuyển đổi nó thành tập lệnh linux hoặc thậm chí là bắt đầu từ đâu. Về cơ bản tôi muốn tạo một tập lệnh tạo các thư mục được sắp xếp theo thứ tự AZ, symlink tất cả các thư mục trong một thư mục đến Thư mục AZ được sắp xếp mới tạo để các phim bắt đầu bằng A như Appleseed sẽ nằm trong thư mục A. * lưu ý tôi đã thử chạy dơi này trong rượu nhưng mklink không tồn tại và sẽ không hoạt động tốt.

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

Tôi không chắc chắn nên bắt đầu từ đâu. Bắt đầu bằng cách gõ man bash. Tiến hành viết các kịch bản đơn giản. Dịch tập tin bó của bạn sang lệnh shell script một lần.
Scott

bạn có thể vui lòng giúp tôi về stackoverflow.com/questions/21403772/
Goofy

Câu trả lời:


2

Bạn đi đây Cú pháp rất đáng ngạc nhiên rất giống nhau. Tôi rút ngắn danh sách của bảng chữ cái với .. nhưng bạn có thể liệt kê nó ra nếu bạn muốn và nó vẫn hoạt động. Tôi không chắc chắn nếu hộp * nix của bạn sẽ hài lòng về các đường dẫn tệp đó.

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

Phần cuối dường như không hoạt động đối với tôi Tôi đang sử dụng hương vị bạc hà Ubuntu 14 nadia. Cụ thể, symlink đang tô hồng khoảng trắng trong tệp / media / Phim / Video của tôi / Danh sách / A.lst Tôi đang sử dụng dòng này cho O trong A; làm cho P bằng $ (cat "/ media / Phim / Video của tôi / Danh sách / $ O.lst"); làm ln -s "/ media / Phim / Video của tôi / Phim / $ {P}" "/ media / Phim / Video của tôi / Phân loại / $ {O} / $ {P}"; làm xong; làm xong; đây là kết quả ln: thất bại trong việc tạo liên kết tượng trưng /media/Movies/My Videos/Categorized/A/The': File exists ln: failed to create symbolic link / phương tiện / Phim / Video của tôi / Phân loại / A / [2011] "': Tệp tồn tại
Thomas

Không nhận ra bạn có khoảng trắng trong tên tệp của bạn. Sử dụng cái này: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;
Michael Yasumoto

bạn có thể vui lòng xem link và giúp tôi không? stackoverflow.com/questions/21403772/ Mạnh
Goofy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.