Создание файлов на основе уже существующих файлов с помощью bash-скрипта

Проверьте правильность URL репозитория в файле sources.list, как описано здесь:https://wiki.debian.org/SourcesList

0
26.02.2020, 23:06
3 ответа
#!/bin/bash
shopt -s nullglob
for file in {apple,pear,orange}_*.txt; do
    touch "NewFile_${file##*_}";
done

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

touchне будет жаловаться, если попытается создать уже существующий файл.

Это решение также будет работать, если после подчеркивания есть пробелы.

2
28.04.2021, 23:22
#!/bin/bash
printf '%s\n' {apple,orange,pear}_*.txt | 
     sed 's/apple\|orange\|pear/NewFile' |
     sort -u |
     xargs touch

Используйте shell glob для получения имен файлов (это не удастся, если их нет, а их десятки тысяч, это может быть проблемой ), используйте sed для изменения имен, затем используйте сортировку -u, чтобы удалить дубликаты.

Наконец, передайте их xargs touch, чтобы создать файлы в соответствии с поясняющим комментарием OP.

0
28.04.2021, 23:22

ls *.txt | cut -f2- -d_ | sort -u | xargs -IX touch NewFile_X

  • cutдает второе "поле" с разделителем_

  • sortсортирует и удаляет дубликаты(unique)

  • xargsзапускает команду touchи заменяет Xтем, что пришло от других

0
28.04.2021, 23:22

Теги

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