Разбивайте файл за строкой и контролируйте расширение файлов

Существует стандартная команда для разделения файлов – split.

Например, если я хочу разбить файл слов в несколько фрагментов из 10000 строк, я могу использовать:

split -dl 10000 words wrd 

и он будет генерировать несколько файлов формы wrd.01, wrd.02 и так далее.

Но я хочу иметь определенное расширение для этих файлов – например, я хочу получить файлы wtd.01.txt, wrd.02.txt.

Есть ли способ сделать это?

3 Solutions collect form web for “Разбивайте файл за строкой и контролируйте расширение файлов”

Не с split , но вы можете легко переименовать их впоследствии, или вы можете сделать это в awk :

 awk '{filename = "wrd." int((NR-1)/10000) ".txt"; print >> filename}' inputfile 

Это было недоступно в то время, но с более поздними версиями ( ≥ 8.16 ) gnu split можно использовать переключатель --additional-suffix для управления полученным расширением. От man split :

 --additional-suffix=SUFFIX append an additional SUFFIX to file names. 

поэтому при использовании этой опции:

 split -dl 10000 --additional-suffix=.txt words wrd 

результирующие части автоматически заканчиваются на .txt :

 wrd00.txt wrd01.txt ......... 

Такие задачи лучше всего управляют оболочкой. Используйте split, а затем напишите простой цикл, чтобы переименовать файлы. Например

 for file in wrd.* do mv "$file" "$file.txt" done 

переименуйте файлы wrd.01, wrd.02 и т. д., чтобы все они имели расширение .txt.

  • Сохранить код выхода для последующего
  • Ошибка переменной типа?
  • Как остановить скрипты bash от выхода из окна в целом
  • Как поймать ошибку в сценарии linux bash?
  • find-command для определенных подкаталогов
  • Изменить каталог и файлы списков
  • Как отслеживать использование процессора / памяти в одном процессе?
  • Что означает «-» (двойная тире)? (также известный как «голой двойной тире»)
  • Каковы основные различия между $ ENV_VAR и `env_var`?
  • Как сделать псевдоним постоянным?
  • echo *, не может узнать, что он делает
  • Interesting Posts

    Альтернативы не работают хорошо для установки Java на Centos 6.4

    Почему команды, используемые в (pre | post) inst скриптах, не указаны в зависимостях?

    файлы сохраняются на диске ntfs, придерживаясь umask, ext4 не

    Сжатие старого файла журнала в один zip-linux

    NAT-T настроен с использованием 3-х линейных машин

    Прогулки Многомерные массивы в Mawk

    Как создать ссылку (ln -s) с абсолютным путем?

    Сброс соединения с помощью serfs

    JAVA_HOME не установлен в скрипте при запуске с использованием sudo

    Как сопоставить шаблон, удалить шаблон, а также следующую и предыдущую строку в Solaris 10

    setcap на dhclient, похоже, не имеет эффекта

    Использование AWK для удаления результата линии и вывода

    После повторного подключения экрана предыдущий bash сломан

    Создать переменную на основе порядка, в котором файл находится в алфавитном списке файлов

    Запуск существующего сеанса tmux при входе в SSH или создание, если не существует

    Linux и Unix - лучшая ОС в мире.