Ярлык в команде mv для переименования файла без изменения его каталога

Это очень легко сделать с помощьюperl6:

perl6 -pe 's:g/<:punct-[-@_%]>+//' file
  • <:punct-[-@_%]>будет соответствовать любому знаку пунктуации, кроме -@_%.
  • :g— это переключатель global(, аналогичный s/foo/bar/ gв perl5 или sed)

Чтобы можно было сравнивать ответы (, а также из-за лени ), я повторно использую пример ввода @RomanPerekhrest:

.!?,'/\"()[]^* @-$%
.!?,'/\"()[]^* @ sdfsd %
as,,d//asd a?sd %%   --@_ _asdasdad$
sdfsdf %''%!% 2 + 2 = (?)

Итак, эта строка:

perl6 -pe 's:g/<:punct-[-@_%]+[^]>+//' file

Дает:

^ @-$%
^ @ sdfsd %
asdasd asd %%   --@_ _asdasdad$
sdfsdf %%% 2 + 2 = 

Обратите внимание, что он отличается от ответа, данного @RomanPerekhrest. Если вы считаете, что ^, =или +также должны быть включены, вы можете использовать следующую строку:

perl6 -pe 's:g/<:punct-[-@_%]+[^+=]>+//' file

Выход будет таким же:

 @-$%
 @ sdfsd %
asdasd asd %%   --@_ _asdasdad$
sdfsdf %%% 2  2  
-1
21.11.2019, 20:53
1 ответ

Вы можете сделать это с помощью расширения фигурной скобки:

mv /long/path/to/file/{old,new}.txt
2
28.01.2020, 05:08

Теги

Похожие вопросы