Как разделить текстовые файлы по количеству символов в каталоге

Файловые возможности устанавливаются в исполняемом файле с помощью setcap .

Но другие возможности могут быть унаследованы от процесса запуска. Это описано на справочной странице возможностей Linux :

.

   Inheritable
          This is a set of capabilities preserved across an execve(2).
          Inheritable capabilities remain inheritable when executing any
          program, and inheritable capabilities are added to the
          permitted set when executing a program that has the
          corresponding bits set in the file inheritable set.

2
30.06.2020, 13:27
2 ответа

Если файлы представляют собой текст ASCII, вы можете использовать split -b100. Это означает 100 байтов, что всегда составляет 100 символов ASCII.

2
18.03.2021, 23:23

Не совсем то, что вы просили, но можно адаптировать.

Это обрабатывает все файлы с суффиксом .txtв текущем каталоге. Для каждого файла (, например.Cairo.txt):

  1. Он использует trдля замены всего белого пробела -новой строкой -, получая один простой -на -строковый список слов.
  2. Он использует fmtдля упаковки целого числа слов в строки до заданной длины.
  3. Он использует split, чтобы превратить эти строки в серию файлов с именами Cairo.seq.0000и выше.

Для удобства тестирования я использовал ширину 60 и строки 30, и мои входные данные были тремя простыми -текстовыми справочными страницами, сгенерированными с помощью этого:

for cmd in tr fmt split; do man $cmd | col -b > $cmd.txt; done

Это скрипт:

#! /bin/bash

    for fn in./*.txt; do
        Base="${fn%.txt}"
        tr -s '[:space:]' '\n' < "${fn}" |
            fmt -60 |
            split -a 4 -d -l 30 - "./${Base}.seq."
    done

Ширина линии равна "60" в команде fmt. Так что вы можете сделать это 100.

Количество строк в выходном файле равно «30» в команде разделения. Казалось, вы хотели, чтобы это была 1 строка в файле. Тем не менее, вы получите много таких маленьких файлов. Файл размером 100 -байт по-прежнему занимает блок размером 4096 -байт.

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

paul $  wc *
   29   214  1561 fmt.seq.0000
   61   214  1832 fmt.txt
   30   260  1665 split.seq.0000
   15   101   780 split.seq.0001
   94   361  2892 split.txt
   30   263  1724 tr.seq.0000
   18   126   929 tr.seq.0001
  124   389  3282 tr.txt
  410  1955 14821 total
paul $ 
0
18.03.2021, 23:23

Теги

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