Я пошел на find
с while read
. find
находит файлы, которые соответствуют регулярному выражению LC <anything> - <anything>.pdf
. Для каждого соответствующего файла я переключаю части, используя sed, а затем вызываю mv
:
find . -type f -regex '\./LC .* - .*\.pdf' |
while IFS= read -r file; do
newfile=$(echo "$file" | sed 's/LC \(.*\) - \(.*\)\.pdf/LC \2 - \1 .pdf/')
mv -v "$file" "$newfile"
done
Для простоты, и если не обрабатывать некоторые странные корсеты (например, каталоги, названные так же, например), вы можете использовать старое добро для:
for file in "LC "*" - "*".pdf"; do
newfile=$(echo "$file" | sed 's/LC \(.*\) - \(.*\)\.pdf/LC \2 - \1 .pdf/')
mv -v "$file" "$newfile"
done
Я тестировал, используя tutorialspoint