Я не знаю, возможно ли это.
Следующая лучшая вещь может передавать вещи по каналу к less -FX
. -F
флаг сразу сделает менее выход, если весь вход будет соответствовать на одном экране, и -X
заставит его не очистить экран после выхода.
Perl-путь:
#!/usr/bin/perl
opendir(DIR,".") or die "$@:$!";
while ($in = readdir(DIR)) {
next unless -f $in;
($out = $in) =~ s/[^a-zA-Z0-9._-]//g;
warn "$@:$!" unless rename $in, $out;
}
closedir(DIR);
regex фильтрует только a-zA-Z... (мог также быть [:печать:] для печатаемых символов) как допустимые символы. Нет никакой проверки пустые целевые имена.
С zsh
:
autoload zmv
zmv -n '(**/)(*)' '$1${2//[^[:print:]]}'
(удалите -n
когда счастливый). Если Вы хотите включать скрытые файлы (и изучить скрытых директоров):
zmv -Qn '(**/)(*)(D)' '$1${2//[^[:print:]]}'
Это удаляет символы, которые являются непечатаемыми в Вашей локали.
’
. Другой появляется как \#37
.
– highsciguy
04.02.2014, 18:29
’
U+2019 (правильная единственная кавычка), это не является особенным ни для какого инструмента, который я знаю. В котором пути это вызывает Вас проблема? Можете Вы, возможно, редактировать свой вопрос с большим количеством специфических особенностей относительно того, какие символы являются проблемой. Они - те, которых Вы не можете ввести со своей клавиатурой? Какую клавиатуру Вы имеете?
– Stéphane Chazelas
04.02.2014, 18:55
[^a-zA-Z0-9._-]
[\W._\-]+
. Я не знаю ($out = $in) конструкция. Что это делает?[:print:]
класс символов, вероятно, был бы слишком большим, если это включает все печатаемые символы жемчуга (новые строки также). – highsciguy 05.02.2014, 12:31