Это очень легко сделать с помощью глобусов оболочки:
Добавьте счетчик в имя ( accept_hits.bam.1
, accept_hits.bam.2
и так далее):
c = 0; для f в * / accept_hits.bam; do mv "$ f" "$ f". $ ((++ c)); done
Это просто перебирает все файлы с именем accept_hits.bam
, которые находятся в подкаталогах текущего каталога, и сохраняет каждый из них как $ f
. Конструкция $ ((++ c))
увеличивает счетчик ( $ c
), поэтому $ f. $ ((++ c))
будет file.1
, file.2
и т. Д., Увеличивается на каждой итерации.
Обратите внимание, что я использую c = 0
в начале. Если вы этого не сделаете, при последующих запусках будет сохранено значение $ c
, и оно будет продолжать увеличиваться.
Добавьте счетчик, но перед расширением ( accept_hits.1.bam
, accept_hits.2.bam
и так далее):
c = 0; для f в * / accept_hits.bam; do
mv "$ f" "$ (dirname" $ f ")" / "$ (basename" $ f ".bam)". $ ((++ c)).bam
done
Команда dirname
возвращает путь к родительскому каталогу файла:
$ dirname / usr / local / bin / apt
/ usr / local / bin
Команда basename
обратная, она удаляет каталог, оставляя только последнюю часть пути, а также может удалить extension:
$ basename /etc/apt/sources.list
sources.list
$ basename /etc/apt/sources.list .list ## remove extension
sources
Итак, mv "$ f" "$ (dirname" $ f ")" / "$ (basename" $ f ".bam)". $ ((++ c)) .bam
переименует файл по своему усмотрению.
Добавьте имя родительского каталога ( accept_hits.dir1.bam
, accept_hits.dir2.bam
или любое другое имя вашего каталога)
для f in * / accept_hits. бац; сделать
dir = "$ (dirname" $ f ")"; mv "$ f" "$ dir" / "$ (basename" $ f ".bam)". "$ dir" .bam
done
Это та же идея, что и выше, только я сохраняю имя каталога как переменную, чтобы упростить его использование как часть имени файла.
Используйте внешние инструменты. Perl переименует, например,
. Стандартное переименование
, которое поставляется с дистрибутивами на основе Debian, не может работать с увеличивающимися счетчиками. Однако я нашел этот , который может. Загрузите сценарий, ссылка на который есть на этой странице, сохраните его как increname
в текущем каталоге и запустите его следующим образом:
perl increname -n 's / .bam / ++ $ c. ".bam" / e '* / accept_hits.bam
Se cierra porque el navegador abre una conexión TCP, realiza la transacción HTTP y luego dice "¡Terminé!" que normalmente cerrará la conexión. Como descubrió, el interruptor -k
mantendrá abierto k
el conector de escucha para futuras conexiones.