Изменение расширения файла

Вы говорите, что вы также получаете эти строки, поэтому я предполагаю, что вы получите нужный результат вместе с этими сообщениями stderr. Вы можете просто перенаправить части stderr в /dev/null следующим образом:

ssh user@server-name "df -hP | egrep '(/home|/cors)' 2>/dev/null"

или

ssh user@server-name "df -hP 2>/dev/null | egrep '(/home|/cors)'"

В зависимости от того, что делает ошибку.

1
задан 28 June 2014 в 00:57

3 ответа

Вы просто используете mv:

mv oldname newname

mv используется для перемещения / переименования файлов. Подробнее см. Справочную страницу mv.

2
ответ дан 24 May 2018 в 06:15
  • 1
    Это будет использоваться в файле сборки, чтобы имена не были известны. – Dobz 27 June 2014 в 15:51
  • 2
    Вы можете сделать mv *.run *.clu, если вы уверены, что хотите переименовать все *.run файлы в *.clu в каталоге, в котором вы выполняете эту команду. – jobin 27 June 2014 в 15:54
  • 3
    это даст имя вывода как «* .clu». Я пытался просто изменить расширение. – Dobz 27 June 2014 в 15:57
  • 4
    for file in *.run ; do mv $file echo $file | sed 's/\(.*\.\)run/\1clu/' ; done это, казалось, сработало – Dobz 27 June 2014 в 15:57
  • 5
    @Jobin mv *.run *.clu либо сбой, либо перемещение всех файлов *run и всех, кроме одного файла *clu, в каталог, заканчивающийся на clu, если он существует и находится в правом алфавитном порядке. В любом случае, это, безусловно, не просто изменит расширения. – terdon♦ 27 June 2014 в 16:30

В таких случаях я предпочитаю mmv (он не установлен по умолчанию в Ubuntu, но вы можете установить его с помощью команды sudo apt-get install mmv):

mmv -n '*.run' '#1.clu'

-n означает что это пробный прогон и фактически не будет изменять какие-либо файлы. Он покажет вам список файлов, которые будут переименованы, если вы удалите -n. В приведенном выше случае он преобразует все файлы из текущего каталога из расширения файла .run в .clu.

mmv -v '*.run' '#1.clu'

-v не является обязательным, но это хорошая идея. включите его, потому что это единственная запись, которую вы будете иметь об изменениях, внесенных командой rename.

Для получения дополнительной информации см. man mmv.

2
ответ дан 24 May 2018 в 06:15

Для этого вам не нужно использовать rename. Вы можете сделать это, используя basename:

for f in *run; do mv "$f" "$(basename "$f" .run)".clu; done

basename напечатает имя файла (без пути), а также удалит необязательный суффикс. Поэтому "$(basename "$f" .run)".clu - это имя файла $f с расширением .run, заменяемым clu.

Вы также можете просто использовать собственные функции манипуляции с bash:

for f in *run; do echo mv "$f" "${f%%.run}".clu; done
]

Конструкция ${var%%string} удаляет строку string с конца переменной $var.

1
ответ дан 24 May 2018 в 06:15

Другие вопросы по тегам:

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