Заархивирование всех файлов в папке, но исключая все вложенные папки

sed -n '/# Begin TRACE A Data/,/# Done Data $capture/{s/ MHz//;s/,/ /;s/.*=//p;}' filename
  • /pattern1/,/pattern2/выбирает только строки от первого до второго паттерна, поэтому все внутри {}выполняется только для диапазона
  • s/ MHz//удаляет примыкающий блок
  • s/,/ /заменяет запятую пробелом
  • s/.*=//pудаляет все до =и печатает шаблон, поэтому будут напечатаны только строки в диапазоне с этим =(опция -nподавляет вывод по умолчанию)

На самом деле, для вашего примера данных вы также можете сделать

sed -n 's/ MHz//;s/.*=//;s/,/ /p'

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

0
02.05.2020, 13:30
2 ответа

В GNU findпредполагается, что нет имен файлов, содержащих символы новой строки:

find. -maxdepth 1 -type f | zip -@ myzip

Опция -@берет список файлов из стандартного ввода, по одному файлу в строке.

1
28.04.2021, 23:16

Одним из способов приблизиться к этому было бы использование zipопции исключения:

zip /path/to/zip/file.zip /path/to/given/folder/* -x /path/to/given/folder/*/

Это говорит zipзаархивировать все в /path/to/given/folder, но также исключить все в этой папке, которая является каталогом. Здесь оболочка выполняет работу с помощью подстановочных знаков, расширяя подстановочный знак, оканчивающийся косой чертой, до списка каталогов в этой папке. Если бы у вас были точечные файлы в этом каталоге, вам пришлось бы расширять их отдельно --, а также исключать любые «точечные каталоги».

2
28.04.2021, 23:16

Теги

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