Я использую file --mime-type *
найти типы пантомимы всех файлов в выбранном каталоге.
Многие из этих файлов не должны быть исполняемым файлом и .conf
или их тип text/plain
. Есть ли комбинация find
команда, которая может возвратить все неисполняемые типы пантомимы к 644
вместо 755
?
Вы можете использовать что-то вроде этого:
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
на каждый предмет Ниже, 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