Получить список имен файлов определенных расширений и записать измененный вывод в файл - PullRequest
0 голосов
/ 05 сентября 2018

Я могу искать все файлы с определенным расширением в моем каталоге (кроме верхнего уровня), используя:

find . -mindepth 2 -type f -name '*.txt'

, который возвращает:

folder1/text1.txt
folder1/text2.txt
...

Я хочу записать эти имена файлов в выходной файл, скажем file-list.txt и изменить содержимое на:

Text file folder1/text1.txt
Text file folder1/text2.txt
...

т.е.. объединить имена файлов в несколько более длинных строк. Как мне сделать это с bash? Я искал и узнал, что sed должен быть в состоянии достигнуть этого результата, но я не мог работать сам.

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

В GNU find вы можете использовать действие -printf для форматирования вывода:

find . -mindepth 2 -type f -name '*.txt' -printf 'Text file %P\n'

, где %P -

Имя файла с именем отправной точки, в которой он был найден.

(в отличие от %p, который удержал бы ведущий ./). Чтобы получить вывод в файл, добавьте перенаправление > file-list.txt после команды.

0 голосов
/ 05 сентября 2018

Добавить с помощью GNU sed:

| sed 's/.*/Text file &/' >file-list.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...