Поиск и замените что-то в разделе «(отдельные кавычки)

Копия сама не выполняет никакого преобразования. В основном "преобразование" происходит как часть процесса чтения. Весь доступ к файлам осуществляется через вызовы VFS (виртуальной файловой системы). Копия читает данные из одного файла с помощью вызовов VFS и записывает их в другой таким же образом, одинаково для любых атрибутов файла, которые она копирует. Копия ничего не знает о форматах дисков, таких как FAT.

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

Только для чтения будут показаны (например, видны в ls -l или Gnome Files -> Properties). "Скрытый" и "системный" атрибуты не имеют эквивалента в Linux (за исключением того, что вы можете получить доступ к ним на FAT с помощью команды fatattr).

В формате диска FAT нет такого разрешения, как user.

0
17.07.2018, 20:30
1 ответ

Сначала найдите все файлы, содержащие Linux.Secret =в начале строки:

find. -type f -exec grep -q '^Linux.Secret =' {} ';'

Обратите внимание, что grep -qничего не выводит, он просто завершает работу со статусом, зависящим от того, совпало выражение или нет.

Затем, для всех файлов, прошедших эти тесты, (является обычным файлом и содержит этот текст ), мы запускаем простую (команду GNU)sed:

find. -type f -exec grep -q '^Linux.Secret =' {} ';' \
    -exec sed -i "s/^Linux.Secret =.*/Linux.Secret = 'NewSecret'/" {} +

Это вносит изменение в -место в файлах, заменяя всю строку строкой, которую мы хотели бы иметь. Мы обрабатываем одинарные кавычки, используя двойные кавычки вокруг выражений, которые этого требуют.

Если вам нужно быть более осторожным с сопоставлением и сопоставлять только Linux.Secrets =, за которым следует что-то в одинарных кавычках:

find. -type f -exec grep -E -q "^Linux.Secret = '[^']+'" {} ';' \
    -exec sed -E -i "s/^Linux.Secret = '[^']+'.*/Linux.Secret = 'NEWSECRET'/" {} +

Связанные:

2
28.01.2020, 02:31

Теги

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