Пакетное изменение нескольких имен файлов в Bash и сохранить вывод - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь изменить несколько имен файлов с помощью цикла for.

Это работает для отправки вывода на экран:

for i in *.gz; do echo $i | sed 's/\-//g'; done

Однако, когда я пытаюсь перезаписать имя файла, используя sed -i, я получаю эту ошибку:

for i in *.gz; do echo $i | sed -i 's/\-//g'; done
sed: no input files

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

есть команда для этого

$ rename - '' *.gz

NB. это стандартная версия, а не расширенная perl версия.

0 голосов
/ 12 сентября 2018

Вместо этого используйте Perl rename:

rename 's/-//g' *.gz

Или используйте простое расширение параметра :

for i in *.gz; do mv -- "$i" "${i//-}"; done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...