Вы не сможете этого сделать без chattr
.
Однако вы можете поместить файлы, которые не хотите изменять или удалять, в отдельный каталог, сделайте этот каталог недоступным для записи (например, chmod og-w DIR
) и файлы в нем доступны только для чтения (например, chmod 644 DIR / *
)
Этот отдельный каталог не должен быть подкаталогом любого каталога, который есть у пользователей. доступ на запись в, в противном случае они все равно смогут удалить каталог или изменить его разрешения.
$ sed -n '/^get\.idea/s/^.*(\(.*\)).*/\1/;p' input | awk -F, 'BEGIN {print "Idea, Description";OFS=","} (NR % 2 ) == 1 {save=$2} (NR % 2) ==0 {print save, $2}'
Idea, Description
"Some idea1 tag abc","Some idea1 description1 abc"
"Some idea2 tag abc","Some idea2 description2 abc"
Мы используем sed
, чтобы удалить весь ненужный мусор, а затем используем awk
, чтобы создать файл CSV, анализируя каждую вторую строку.
Одной командойawk
:
awk 'BEGIN{ print "Idea, Description"; FS = OFS = "," }
{ desc = substr($2, 1, length($2) - 2) }
{ if ($1 ~ /"tag/){ tag = desc } else { print tag, desc } }' idea.js
Выход:
Idea, Description
"Some idea1 tag abc","Some idea1 description1 abc"
"Some idea2 tag abc","Some idea2 description2 abc"
Расширенный подход для покрытия требования «создать соответствующий файл.csv в том же каталоге, в котором был найден файл idea.js
»:
Создать idea_to_csv.awk
скрипт:
#!/bin/awk -f
BEGIN{ print "Idea, Description"; FS=OFS="," }
{ desc = substr($2, 1, length($2)-2) }
{ if ($1 ~ /"tag/){ tag = desc } else { print tag, desc } }
find. -type f -name "idea.js" -execdir sh -c 'awk -f ~/idea_to_csv.awk "$1" > idea.csv' _ {} \;
Изменить путь ~/idea_to_csv.awk
к вашему фактическому местоположению, где был создан idea_to_csv.awk