chmod только определенные типы пантомимы

Я использую file --mime-type * найти типы пантомимы всех файлов в выбранном каталоге.

Многие из этих файлов не должны быть исполняемым файлом и .conf или их тип text/plain. Есть ли комбинация find команда, которая может возвратить все неисполняемые типы пантомимы к 644 вместо 755?

2
задан 20 November 2014 в 01:54

2 ответа

Вы можете использовать что-то вроде этого:

file -F' ' --mime-type * | awk '$2 ~ /text\/plain/{print $1}' | xargs chmod 644

Это меняет все разрешения на 644, если файл имеет тип mime text/plain. Просто замените часть в теле awk на любой тип пантомимы. См. /etc/mime.types для всех доступных.

Объяснение:

  • Флаг -F' ' заставляет файл использовать пробел в качестве разделителя между именем файла и результатом. Для более позднего утверждения awk легче
  • Часть awk печатает только имя файла, если второе поле ($2) вывода содержит text/plain.
  • xargs звонит chmod 644 на каждый предмет
3
ответ дан 6 October 2019 в 19:59

Ниже, file --mime-type команда используется в сценарии Python. Это изменяет полномочия типов (типов) файлов, которые Вы определяете к 'new_permissions' в данном каталоге (рекурсивно).

#!/usr/bin/env python3

import subprocess
import os

directory = '/path/to/files'
m_subject = ('text/plain', 'another_mimetype')
new_permissions = '644'

for root, dirs, files in os.walk(directory):
    for file in files:
        check_mtype = 'file --mime-type '+'"'+root+'/'+file+'"'
        mtype = subprocess.check_output(
            ['/bin/bash', '-c', check_mtype]).decode('utf-8').strip().split(' ')[-1]
        if mtype in m_subject:
            set_permissions = 'chmod '+str(new_permissions)+' '+root+'/'+file
            subprocess.Popen(['/bin/bash', '-c', set_permissions])
            print('permission set to '+new_permissions+' '+root+'/'+file)

Копия сценарий в пустой файл, в главном разделе сценария, установил каталог, типы пантомимы, чтобы измениться и новые полномочия, сохранить его как change_types.py.

Выполнение это командой:

python3 /path/to/change_types.py
1
ответ дан 6 October 2019 в 19:59

Другие вопросы по тегам:

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