Как скопировать содержание файлов от поиска командной строки в единственный файл?

Вы можете использовать sed для замены каждого вхождения строки, как описано здесь:

sed -i 's/\£/\$/g' FILENAME

Опция -i сообщает sed для работы с файлом, s является оператором для замены строк, - это строка, которую нужно заменить, \$ - это строка, заменяющая каждый символ $ (\ экранирует знаки, так как они являются специальными символами), а g означает замену каждого экземпляра.

EDIT: опция -i не работает на Solaris, вы должны использовать этот обходной путь.

.

1
28.08.2017, 17:31
1 ответ

Используется bzip2 , который не является архиватором файлов , поэтому tar по существу действует как архиватор файлов и bzip2 объединяет их.

Например, архивирование коллекции файлов с помощью tar, а затем сжатие полученного архивного файла с помощью gzip приводит к созданию файла с расширением .tar.gz.

Однако этот подход имеет недостаток, как указано во вики-статье:

Извлечение или изменение одного файла затруднено. Для извлечения одного файла требуется распаковка всего архива, что может занять много времени и места.

Поэтому я предлагаю использовать только .tar или .zip или .rar , если вы часто извлекаете один файл.

-121--187250-

BASH _ ENV считывается только в неинтерактивной оболочке и только в том случае, если эта оболочка является bash (и не называется под именем sh ). Интерактивная оболочка без входа в систему не ищет $ BASH _ ENV :

$ export BASH_ENV=/home/cuonglm/bash-env.sh
$ bash -lci '. test.sh'
QWERTY
$ bash -lc '. test.sh'
BASH_ENV read
QWERTY
$ bash -ci '. test.sh'
QWERTY
$ bash -c '. test.sh'
BASH_ENV read
QWERTY

Отсутствует стандартный файл, выполняемый в неинтерактивной оболочке для пользователя. Вы должны установить его в отдельном файле, затем источник:

bash -c '. ~/.profile; echo 123'

Или вы можете установить его в какой-либо системный конфигурационный файл, как /etc/environment или /etc/bashrc.bashrc .

-121--49158-

При использовании GNU grep и xargs :

grep -rlZ search-text some/dir/ | xargs -r0 cat > dump.test

-l необходимо перечислить файлы, содержащие по крайней мере одну строку, соответствующую search-text . -Z - печать этой строки с ограничением NUL, чтобы ее можно было безопасно передать в xargs -0 .

-r для поиска во всех файлах в некоторые/dir/ рекурсивно.

POSIXly:

find some/dir -type f -size +0 -exec grep -q search-text {} \; 
   -exec cat {} + > dump.test

Это будет менее эффективно, так как это означает выполнение одной команды grep на один непустой файл.

2
27.01.2020, 23:38

Теги

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