Użyłem podwójne przekierowanie z nowych deskryptorów plików do nazwy wszystkich plików flac o katalogu według danej „filelist.txt” w ten sposób:
while read -u 9 filename ; do
read -u 8 newname
echo mv "$filename" "$newname"
done 9<<<"$(ls -1 *flac)" 8< filelist.txt
Każda nazwa pliku .flac w katalogu przechodzi przez deskryptor pliku 9 do zmiennej "nazwa pliku", podczas gdy w sam W iteracji, każda linia pliku filelist.txt przechodzi przez deskryptor pliku 8 do zmiennej "newname".
Tak, jednego z nowych deskryptorów plików można było uniknąć i po prostu użyć domyślnego standardowego wejścia (usuwając "-u 9" i "9"), ale przyzwyczaiłem się, aby nie używać stdin; w ten sposób możesz dołączyć do pętli wyrażenie do odczytu dla interaktywności lub kontroli, a nie zostaną one wypełnione przez przekierowane dane.
Echo jest "tylko do testu" i powinno zostać usunięte po zatwierdzeniu operacji.
Czy masz jakieś kryteria mapowania plików w folderze na ciągi? Pytam o to, ponieważ: jeśli użyjesz, powiedz 'ls', aby uzyskać pliki, otrzymasz posortowane alfabetycznie, ale ostatecznie możesz mieć inne mapowanie' filename_X => string_Y' –