Cat файлы с одинаковыми именами из разных каталогов в один файл с таким же именем

Я сделал туториал по установке Grub на CentOS 7:

Установка двойной загрузки с помощью Grub

Установка Grub2 и двойная загрузка с Windows 10

Если ваша конфигурация Grub не соответствует вашим требованиям, следуйте этому руководству. Сначала переустановите Grub.

sudo yum reinstall grub2-tools

Войдите в систему как root в терминале

su

В другом терминале получите информацию о вашем жестком диске Windows 10, в моем случае он назывался «/dev/sdb1»

sudo fdisk -l

В моей конфигурации мой диск с Windows 10 находился на другом жестком диске. Подписывайтесь, только если вы находитесь в такой же ситуации.

В корневом терминале перейдите в каталог конфигурации grub

 cd  /etc/grub.d/

Теперь мы должны найти UUID вашего жесткого диска Windows 10,введите эту команду в свой не -корневой терминал

ls -l /dev/disk/by-uuid

Найдите код UUID рядом с вашим диском, например :40S863A9D8619F12

Теперь в корневом терминале введите команду:

nano 40_custom

Внутри этого файла введите конфигурацию Windows 10, используя стандарт GRUB. Используйте код UUID, ранее найденный внутри конфигурации. В моем случае мой конфиг:

menuentry 'Windows 10' {
        insmod ntfs
        insmod ntldr
        insmod part_msdos
        insmod search_fs_uuid
        search --fs-uuid --no-floppy --set=root 40S863A9D8619F12
        ntldr /bootmgr
}

Сохраните и выйдите из nano. Теперь нам нужно создать новый файл конфигурации GRUB. Введите команду:

grub2-mkconfig --output=/boot/grub2/grub.cfg

Вуаля!!!! Попробуйте конфигурацию с новым перезапуском

Источник :http://dareneiri.github.io/Configuring-Grub-2-on-CentOS-7/https://ihaveabackup.net/article/grub2-entry-for-windows-10-uefi

(Дополнительно )Установите настройщик GRUB

Если вы хотите иметь сексуальное меню GRUB, вы можете установить настройщик grub -с помощью этого руководства :https://centos.pkgs.org/7/epel-x86_64/grub-customizer-5.0.6-1.el7.x86_64.rpm.html

вы можете найти больше руководств по адресу:https://github.com/Winterhart/CentOS7-Setup/

0
02.04.2020, 13:53
1 ответ

В этом ответе следует отметить несколько моментов.

  1. Как правило, плохая идея анализировать вывод ls, если вместо этого вы можете использовать шаблоны оболочки glob, чтобы делать то, что вы хотите вместо этого -см. [http://mywiki.wooledge.org/ParsingLs] . Я не использовал опцию оболочки nullglob для переносимости, но это сделало бы сценарии немного короче.

  2. Вы хотите убедиться, что ваши шаблоны глобусов не слишком широкие, поэтому вы говорите catиспользовать одно и то же имя файла для ввода и вывода, в противном случае вы можете очень быстро заполнить свой жесткий диск, когда будете пытаться создавать файл бесконечного размера.

  3. Если вы указываете шаблон, подобный *.fasta, и он не соответствует ни одному файлу, то используется литеральная строка *.fasta.

  4. Если у вас есть файл с именем *.fasta, то один из способов отличить его от шаблона — посмотреть, читается ли он.

  5. Установка --для завершения разбора аргументов — хорошая идея, если могут быть неправильные имена файлов.

Сначала простой скрипт.

# Simple script, assumes that "Species1" has all the needed "SequenceX.fasta" files
# Start in the directory containing "Species1", "Species2" etc.
# create output directory
mkdir "final"
# Go into the first directory
cd "Species1"
# Loop over all the files
for i in *".fasta"
do
    # join all the like named files in the sibling directories to the output
    # use a pattern which doesn't match../final/$i to get list of files to join.
    cat "../Species"*"/$i" > "../final/$i"
done

Это предполагает, что "Species1" содержит все файлы "SequenceX.fasta". Если это не так, то вам, вероятно, нужна двойная петля. Это более надежно, но дольше и медленнее.

# Start in the top level and loop over the directories
for dir in */
do
    # don't do anything inn the output directory
    [ "$dir" = "final" ] && continue
    # cd into directory, protecting against rogue directory names
    cd "./$dir" || { echo "cd to $dir failed" >&2 ; exit 1 ; }
    # loop over the files 
    for file in *"fasta"
    do
         # check the file exists, if there are no files matching the pattern
         # then the shell will pass the pattern through to the loop
         if [ -r "$file" ] ; then
             cat -- "$file" >> "../final/$file"
         fi
    done
    cd ".." || { echo "failed to return from $dir" ; exit 1 ; }
done

0
28.04.2021, 23:18

Теги

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