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

Скрипт Crontab не сохраняет результат в файл
grep файл и передать выходные данные в sed и сохранить выходные данные sed в файле
push / pop текущий каталог?
CentOS 7: не удается подключиться через WinSCP при выполнении bash
Как удалить все файлы, начинающиеся с определенной строки в Linux
BASH: асинхронное выполнение команд с задержкой
Как сократить отображение символов no of для текущего каталога в приглашении
Запустить mplayer из bash в фоновом режиме без дополнительного bash
Windows 10 Ubuntu-создание папки из windows, то доступ из Bash
Перехват ошибки команды bash в переменной
Предыдущие команды, заключенные в квадратные скобки в терминале OS X
$PATH не сохраняется после экспорта путей Imagemagick
Как удалить файл на Linux с? по имени
Как переименовать несколько файлов в bash (не по шаблону, а с запросом на каждое новое имя)?
Добавление пользовательских строк в файл с помощью shell-скрипт

Trim имена файлов Tarballs с помощью Bash

мне нужно оценить исходный код от разных студентов. Процесс отправки осуществляется через Blackboard, который добавляет к имени файла кучу ненужных вещей. Приведем пример:

Test Submission_adunn_attempt_2014-04-04-10-48-37_adunn-helloworld.tar.gz

Я хотел бы переименовать этот файл (и все остальные) в:

adunn-helloworld.tar.gz

Как я могу сделать это в bash-скрипт?

5
задан Daeden
источник

1 ответов

вы можете использовать расширение параметров оболочки:

$ s="Test Submission_adunn_attempt_2014-04-04-10-48-37_adunn-helloworld.tar.gz"
$ echo "${s##*_}"
adunn-helloworld.tar.gz

используйте цикл для переименования файлов:

for f in *.gz; do
  mv "$f" "${f##*_}"
done

в качестве альтернативы, вы можете использовать prename (часть дистрибутива perl):

rename 's/.*_//' *.gz
3
отвечен devnull 2014-04-05 05:21:32
источник

Другие вопросы bash bash-scripting filenames