Как мне перебрать файл, чтобы создать серию новых файлов .docx? - PullRequest
2 голосов
/ 28 октября 2019

Фон

У меня есть file имен файлов примерно так:

something.txt
another.cpp
whoa.cxx
...

Я хочу создать соответствующий текстовый файл для каждого как такового в текущем каталоге:

./something.txt.docx
./another.cpp.docx
./whoa.cxx.docx

Это должна быть очень простая операция ... но последовательность команд, о которых я думаю, не имеет смысла логически:

Попытки решения

  1. Прикоснись к коту: cat file | touch <not sure what to put here>.docx.

    a. Как вы можете видеть, я не знаю, как добавить расширение .docx к каждому имени файла, с которым я сталкиваюсь, и я не знаю, как аккуратно выполнить добавление регулярных выражений таким образом. Справочная страница touch , похоже, также не поможет в этом вопросе.

  2. Трубка в xargs touch: cat file | xargs -I{} touch {}.docx

    a. Я намеревался использовать опцию -I , чтобы буквально добавить .docx, чтобы получить результат, показанный выше. Ниже приведена предполагаемая функциональность -I:

    -I replace-str

    Заменить вхождения replace-str в исходных аргументах именами, прочитанными изстандартный ввод. Кроме того, пробелы без кавычек не заканчивают элементы ввода;вместо этого разделителем является символ перевода строки. Подразумевает -x и -L 1.

    Это выдало ошибку xargs: .docx: No such file or directory.

Вопрос

Как перебрать файл и создать соответствующие .docx для каждой строки в файле?

Ответы [ 2 ]

1 голос
/ 28 октября 2019

Это может быть достигнуто командой ниже

ls -1rt |awk '{print "touch" $ 0 ".docx"}' |Баш

1 голос
/ 28 октября 2019

Предполагая, что содержимое файла достаточно хорошо отформатировано и не имеет странных угловых регистров, вы можете сделать это:

while IFS= read -r line; do
  touch "$line.docx"
done < input-file-name.txt

Я только что подтвердил, что он работает в моей системе.

...