Я хотел бы удалить экранированные символы из имен файлов, поэтому эти примеры
=Web_Help_Desk_Pro%26Lite.pdf =Windows_7_%2b_s-drev.pdf
станет
=Web_Help_Desk_ProLite.pdf =Windows_7__s-drev.pdf
Кто-нибудь знает, как это сделать в Perl или BASH?
Если $file - ваше имя файла:
$file
my $file = '=Web_Help_Desk_Pro%26Lite.pdf'; $file =~ s/%[0-9a-f]{2}//gi;
т.е. замените % с двумя шестнадцатеричными символами на пустую строку.
%
На основании вашей помощи я придумал
for f in $(find . -name \*.html); do mv $f $(echo $f | sed 's/%[a-z0-9][a-z0-9]//gi') done
Это должно работать
sed 's/%[[:alnum:]]\{2\}//g' INPUT_FILE
Просто удалить знак процента и следующие две шестнадцатеричные цифры:
$path =~ s/%[\da-f][\da-f]//gi;
Попробуйте это:
rename 's/\r//' *.html
Если вы не возражаете против зависимости, есть команда ' convmv ':
convmv --unescape --notest <files>