Как убрать экранированные символы в именах файлов? - PullRequest
4 голосов
/ 10 января 2012

Я хотел бы удалить экранированные символы из имен файлов, поэтому эти примеры

=Web_Help_Desk_Pro%26Lite.pdf
=Windows_7_%2b_s-drev.pdf

станет

=Web_Help_Desk_ProLite.pdf
=Windows_7__s-drev.pdf

Кто-нибудь знает, как это сделать в Perl или BASH?

Ответы [ 6 ]

3 голосов
/ 10 января 2012

Если $file - ваше имя файла:

my $file = '=Web_Help_Desk_Pro%26Lite.pdf';
$file =~ s/%[0-9a-f]{2}//gi;

т.е. замените % с двумя шестнадцатеричными символами на пустую строку.

2 голосов
/ 10 января 2012

На основании вашей помощи я придумал

for f in $(find . -name \*.html); do
   mv $f $(echo $f | sed 's/%[a-z0-9][a-z0-9]//gi')
done
2 голосов
/ 10 января 2012

Это должно работать

sed 's/%[[:alnum:]]\{2\}//g' INPUT_FILE
2 голосов
/ 10 января 2012

Просто удалить знак процента и следующие две шестнадцатеричные цифры:

$path =~ s/%[\da-f][\da-f]//gi;
0 голосов
/ 31 марта 2014

Попробуйте это:

rename 's/\r//' *.html
0 голосов
/ 26 февраля 2013

Если вы не возражаете против зависимости, есть команда ' convmv ':

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