Подмножество из имен файлов - PullRequest
0 голосов
/ 06 июня 2018

У меня есть несколько файлов с именами:

Mycase_xxx_x_xxx.csv
Mycase_xxx_x_xxx_xx_x.csv
Myanalysis_x_xx_xx_xxx_x_x.csv
Myattempt_xx_x_xxxx.csv

Мне бы хотелось, чтобы файлы назывались следующим образом:

xxx_x_xxx.csv
xxx_x_xxx_xx_x.csv
x_xx_xx_xxx_x_x.csv
xx_x_xxxx.csv

Другими словами, я хотел бы (от Unix) сохранить все символы, которые присутствуют в именах файлов после первого слова.

Может кто-нибудь помочь мне, пожалуйста?

Заранее спасибо

1 Ответ

0 голосов
/ 06 июня 2018

Этого можно достичь с помощью утилиты Perl rename, которая в зависимости от вашей системы может называться rename, prename или perl-rename.В Debian и Ubuntu его можно установить следующим образом:

sudo apt install rename

Обратите внимание, что в некоторых системах команда rename может быть rename в Perl, а в других - util-linux.rename и для других это может быть GNU rename.Эти инструменты не совместимы друг с другом.

Инструмент Perl rename в Debian и Ubuntu можно использовать следующим образом:

prename 's/expression/substitution/' filenames...

Или применить ко всем файлам в текущем каталоге:

prename 's/expression/substitution/' *

Полезной функцией Perl rename является возможность использовать регулярные выражения (обратите внимание, что поддерживаемый синтаксис похож на синтаксис sed).

В вашем случаерегулярное выражение, совпадающее с префиксом ваших имен файлов до первого знака подчеркивания и включающее его, выглядит следующим образом:

^[^_]*_

Затем его можно заменить пустой строкой, чтобы удалить эту часть имени файла, что приведет кследующая команда:

prename 's/^[^_]*_//' *

Перед запуском этой команды, если вы не уверены и хотите проверить, что файлы будут переименованы так, как вы хотите, вы можете добавить флаги -vn следующим образом:

prename -vn 's/^[^_]*_//' *

Это не будет переименовывать какие-либо файлы, а вместо этого выведет список файлов, которые будут переименованы, например:

$ prename -vn 's/^[^_]*_//' *
Myanalysis_x_xx_xx_xxx_x_x.csv -> x_xx_xx_xxx_x_x.csv
Myattempt_xx_x_xxxx.csv -> xx_x_xxxx.csv
Mycase_xxx_x_xxx.csv -> xxx_x_xxx.csv
Mycase_xxx_x_xxx_xx_x.csv -> xxx_x_xxx_xx_x.csv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...