поменять местами поля в именах файлов

Это можно сделать с помощью printfи bash:

.
printf '%08x\n' $(< test.txt)

Или с помощью printf и bc...просто...потому что?

printf '%08s\n' $(bc <<<"obase=16; $(< test.txt)")

Чтобы напечатать вывод в текстовый файл, просто используйте перенаправление оболочки >, например:

printf '%08x\n' $(< test.txt) > output.txt
0
12.08.2020, 15:39
1 ответ
rename -n 's/([^_]*_[^_]*)_([^_]*).pdf/$2_$1.pdf/' *
  • [^_]*Любое количество знаков подчеркивания, отличных от -.
  • ( )Захват группы. 1-я пара воспроизводится $1, а 2-я пара — $2.

Удалите -n, если результат вас устраивает.

Аналогичный подход со сценарием оболочки:

for file in *.pdf; do
    f12=${file%_*}
    f3=${file##*_}
    f3=${f3%.pdf}
    mv -- "$file" "${f3}_${f12}.pdf"
done

В расширении параметра вы найдете значение %и ##.

1
18.03.2021, 23:13

Теги

Похожие вопросы