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

Включите команду в /etc/rc.local.

Примечание: вы должны поставить команду перед последней строкой в ​​/etc/rc.local, которая содержит: «exit 0».

1
задан 14 November 2014 в 15:37

6 ответов

rename 's/.*?\.([^.]+).*/$1.bam/' *.bam -vn

Удалите -vn, когда увидите, что он делает то, что вы хотите. Вот мой тестовый жгут:

$ touch 34234234kh.TESTING00{1..3}.234978623478y234.bam
$ rename 's/.*?\.([^.]+).*/$1.bam/' *.bam -vn
34234234kh.TESTING001.234978623478y234.bam renamed as TESTING001.bam
34234234kh.TESTING002.234978623478y234.bam renamed as TESTING002.bam
34234234kh.TESTING003.234978623478y234.bam renamed as TESTING003.bam
8
ответ дан 24 May 2018 в 01:52

Вы можете использовать замечательную программу krename:

sudo apt-get install krename

В этой программе есть предварительный просмотр результата и, в частности, можно использовать только определенный диапазон маски имени файла:

Маска находится в ➀. См. Исходные имена файлов в именах ➁ и to-be в ➂. Если это кажется прекрасным, вы можете нажать на конец: ➃ - только после этого файлы будут фактически переименованы.

4
ответ дан 24 May 2018 в 01:52

Используйте команду find для поиска всех файлов *.bam и по циклу каждый раз читайте каждый файл и, наконец, с командой mv переименуйте их в нужные вам имена.

find /path/to/maindir -type f -name "*.bam" -print0 | while IFS= read -d '' -r file
do
    echo mv -v "$file" /path/to/maindir/"$(awk -F'.' '{print $2".bam"}'<<< "$file")";
done

Результат: [ ! d1]

mv -v /home/USER/maindir/IonXpress_049.T11014.R_2014_11_13_11_26_35_user_PR2-41-Pooling0026_3140_13112014.bam /home/USER/maindir/T11014.bam
mv -v /home/USER/maindir/IonXpress_050.T11114.R_2014_11_13_11_26_35_user_PR2-41-Pooling0026_3140_13112014.bam /home/USER/maindir/T11114.bam

Если вы проверили результат, удалите команду echo для реального переименования.

3
ответ дан 24 May 2018 в 01:52

Предполагая, что

искомое имя - «тело» всегда после первой точки, всегда присутствует расширение .bam, каталог «плоский» и не имеет подкаталогов

] Это решение python должно выполнить эту работу. Количество разделов может меняться, оно все равно будет работать:

#!/usr/bin/env python3

import os
import shutil
import sys

directory = sys.argv[1]

for item in os.listdir(directory):
    if not item.startswith("."):
        edit = item.split("."); newname = (".").join([edit[1], edit[-1]])
        if len(edit) > 2:
            shutil.move(directory+"/"+item, directory+"/"+newname)

Скопировать его в пустой файл, сделать его исполняемым (запустить его без префикса python3) и запустить его командой:

</path/to/script> <directory_with_files>

Так что:

monkey.banana.peanut.bam

становится

banana.bam

и

monkey.apple.peaunt.another_string.and_alot_more.bam

становится

apple.bam

, а

something.bam

оставлен один.

2
ответ дан 24 May 2018 в 01:52

Другое решение python через модуль re.

script.py

#!/usr/bin/python3
import sys
import re
import os
import shutil

directory = sys.argv[1]
for item in os.listdir(directory):
    if '.' in item:
        newname = re.sub(r'^[^.]+\.([^.]*).+(\.bam)', r'\1\2', item)
        shutil.move(directory+"/"+item, directory+"/"+newname)

Как запустить?

python3 script.py /path/to/the/directory/where/the/files/you/want/to/rename/are/stored
1
ответ дан 24 May 2018 в 01:52

Хотя все эти ответы хороши, я хочу показать вам метод, который не связан с программированием (и может быть намного быстрее, если у вас уже установлен Sublime Text)

Установить Sublime Text (http: // www.sublimetext.com/) Установите Sublime Package Control (https://packagecontrol.io/installation). Установите пакет FileBrowser (ctrl+shif+p> Установить пакет> FileBrowser http://github.com/aziz/SublimeFileBrowser). Настройте Комбинация клавиш FileBrowser (ctrl+shift+p> Пользователь привязки клавиш), например { "keys": ["f1"], "command": "dired", "args": { "immediate": true } } запустите FileBrowser (F1) многократно выберите ваши файлы (выберите общий паттерн> ctrl+d) перейдите в режим переименования (shift+R) отредактируйте, как обычный текстовый редактор (например, ctrl+right для перехода между словами) примените переименование с Enter
0
ответ дан 24 May 2018 в 01:52

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

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