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

Обнаружение известного компьютера в общедоступной сети в BASH
Командная строка Windows захват вывода сценария bash в один шаг
Значение "shmmax" слишком велико при установке Oracle 11g на RHEL7
Почему я добавляю путь к~/.профиль bash и источник, но нет никакого эффекта?
последовательное выполнение команды SSH не работает в Ubuntu / Bash
Как получить pid запущенного процесса с помощью одной команды, которая анализирует выходные данные ps?
Как повтор символа n раз с printf
Linux Bash: перемещение / копирование файлов / каталогов по метке времени
Скрипт действует по-разному при запуске cron
Удалить все файлы, кроме некоторых в bash, без CD в каталог?
Попытка распаковать файл внутри подкаталога получение ошибки: внимание: имя файла не совпадает
Поиск уникальных файлов на 2 дисках
Как запустить SAMBA на MAC OS X с терминала?
найти количество команд из файла [закрыт]
Как запустить команду в новом gnome-терминале?

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