Как использовать sed во всех соответствующих файлах?

Это не так, потому что, как указывали другие, рассматриваемое поведение зависит от оболочки. Как вы (ОП) указали, это немного педантичная, может быть даже юмористическая, своего рода тема.

Однако в системах GNU у вашей исходной предпосылки есть и другое решение: cp --no-preserve=all file1 file2. Попробуйте это, я думаю, что это удовлетворит вашу описанную ситуацию (например, изменение содержимого file2 без изменения его атрибутов).

Example:

$ ls -l
    total 8
    -rw-r--r-- 1 tniles sambashare 16 Dec 16 12:21 fezzik
    -rw-r--r-- 1 tniles tniles     14 Dec 16 12:16 fred
$ cat *
    Lookout, world!
    Hello, world!
$ cp --no-preserve=all fred fezzik 
$ ls -l
    total 8
    -rw-r--r-- 1 tniles sambashare 14 Dec 16 12:22 fezzik
    -rw-r--r-- 1 tniles tniles     14 Dec 16 12:16 fred
$ cat *
    Hello, world!
    Hello, world!

UPDATE На самом деле, я только что заметил, что cp в моей системе сам по себе, похоже, сохраняет атрибуты, если не указаны -a или -p. Я использую оболочку bash и GNU coreutils. Думаю, каждый день узнаешь что-то новое...


Результаты теста (по Wildcard), включая жесткую ссылку и различные разрешения:

$ ls -li
total 12
913966 -rw-rw-r-- 1 vagrant vagrant 30 Dec 16 20:26 file1
913965 -rwxrw---- 2 pete    vagrant 39 Dec 16 20:35 file2
913965 -rwxrw---- 2 pete    vagrant 39 Dec 16 20:35 hardlinktofile2
$ cat file1
This is the contents of file1
$ cat file2
This is the original contents of file2
$ cp file1 file2
$ ls -li
total 12
913966 -rw-rw-r-- 1 vagrant vagrant 30 Dec 16 20:26 file1
913965 -rwxrw---- 2 pete    vagrant 30 Dec 16 20:37 file2
913965 -rwxrw---- 2 pete    vagrant 30 Dec 16 20:37 hardlinktofile2
$ cat file1
This is the contents of file1
$ cat file2
This is the contents of file1
$ 

-1
10.10.2018, 15:34
1 ответ

Вы можете использовать sedс несколькими входными файлами:

sed 'what/you/wanna/do' file1 file2 file3
sed 'what/you/wanna/do' file*
sed 'what/you/wanna/do' *.txt
sed 'what/you/wanna/do' $(find | grep \.ext)

Чтобы сохранить изменения, вместо вывода их на стандартный вывод используйте параметр-i(вместо):

sed -i 'what/you/wanna/do' $(find | grep \.ext)
1
28.01.2020, 05:09

Теги

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