скрипт для переименования файла - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь написать скрипт для пакетного переименования файлов в папке, в точности так:

Имя файла: LC PartA - PartB.pdf

станет LC PartB - PartA.pdf

Таким образом, в основном все, что после «-», должно быть перед «-», а то, что перед «-», должно идти после «-», кроме первых 3 символов («LC») ).

Кто-нибудь? Заранее спасибо.

1 Ответ

0 голосов
/ 10 января 2019

Я пошел на 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

...