Обрезка имен длинных имен файлов [Rename] - PullRequest
0 голосов
/ 04 июля 2018

У меня довольно много файлов, которые мне нужно переименовать. Во всех уроках я видел только списки, добавляющие что-то к старому имени файла Например, от abc.txt до unix_abc.txt или abc_unix.txt. Я знаю, что должен использовать регулярные выражения, но не могу написать точное выражение.

for FILENAME in *; do mv $FILENAME {SOME_EXPRESSION_HERE}; done

Как написать это выражение? Я мог бы подумать об этом выражении

Unix_Unix_[0-9][0-9][0-9]_without_dash_file.pdf

Мои имена файлов

Unix_Unix_1_without_dash_file.pdf
Unix_Unix_10_without_dash_file.pdf
Unix_Unix_100_without_dash_file.pdf

Мне нужно, чтобы это было похоже на

1.pdf
10.pdf
100.pdf

Это только число между именем файла.

Спасибо за помощь.

1 Ответ

0 голосов
/ 04 июля 2018

Не могли бы вы попробовать следующую команду и сообщить мне, если это поможет вам. Я печатаю mv команды, сейчас вы можете удалить echo, если чувствуете, что это правильно.

for file in Unix*.pdf
do
   temp="${file/_without*/}"
   echo "mv $file ${temp##*_}.pdf"
done

Вывод будет следующим.

mv Unix_Unix_100_without_dash_file.pdf 100.pdf
mv Unix_Unix_10_without_dash_file.pdf 10.pdf
mv Unix_Unix_1_without_dash_file.pdf 1.pdf

ПРИМЕЧАНИЕ: Как уже упоминалось выше, как только вы довольны приведенной выше командой, удалите echo из строки echo "mv $file ${temp##*_}.pdf", а затем измените ее на mv "$file" "${temp##*_}.pdf", после чего эти файлы будут переименованы. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...