Я загрузил много файлов, некоторые из которых содержащий недопустимые символы закодировали к чему-то как %2C
, %2F
...
Я попробовал rename 's/%[0-9][A-Z]/_/g *
и rename 's/\%[0-9][A-Z]/_/g *
но они ничего не делают. (Извините, мой отказ. rename
работы. Я ввел некоторые опечатки или что-то связанное с полноширинными символами / символами полуширины... ONZ.......... Голосуйте для закрытия этого Q)
Например, имена файлов file,1.pdf
, file/2.pdf
... кодируются как file%2C1.pdf
, file%2F2.pdf
. Я хочу переименовать их к file_1.pdf
, file_2.pdf
,...
Можно использовать:
rename 's/%/_/g' *
Первый показ это использование -n
опция (пробный прогон) для проверки все прекрасно:
rename -n 's/%/_/g' *
Получать число также:
rename -n 's/%[0-9]/_/g' *
или даже используйте что-то вроде этого для удаления всех символов кроме алфавитно-цифровых:
$ rename -n 's/[^a-zA-z0-9]/_/g' *
rename(%SOME%2FFOR%, _SOME_2FFOR_)
rename(SOME%2FFOR, SOME_2FFOR)
rename(SOME%2FFOR%, SOME_2FFOR_)
используйте следующий сценарий, скопируйте сценарий и сохраните его в /bin
как renamer.sh
затем каждый раз, когда Вы хотите сделать любые переименования на файлах этого типа, используйте простую команду renamer.sh #Input files#
;
#!/bin/bash
for input in $@;
do
inputMod=$( echo "$input" | sed 's/\(%\)/\_/pg' );
mv "$input" "$inputMod" &> /dev/null;
shift;
done;