2 votes

chmod seulement certains types de mime

J'utilise file --mime-type * pour trouver les mime-types de tous les fichiers dans un répertoire sélectionné.

Beaucoup de ces fichiers ne devraient pas être exécutables et sont .conf ou leur type est text/plain . Y a-t-il une combinaison de find qui peut changer tous les mime-types non exécutables en 644 au lieu de 755 ?

3voto

chaos Points 25386

Vous pourriez utiliser quelque chose comme ça :

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

Cela change toutes les permissions en 644 si un fichier a le mime-type text/plain . Il suffit de remplacer la pièce dans le awk à n'importe quel type de mime que vous souhaitez. Voir /etc/mime.types pour tous ceux qui sont disponibles.

Explication :

  • El -F' ' permet au fichier d'utiliser un espace comme séparateur entre le nom du fichier et le résultat. C'est plus facile pour les awk déclaration
  • El awk n'imprime que le nom du fichier si le deuxième champ ( $2 ) de la sortie contient text/plain .
  • xargs appelle chmod 644 sur chaque article

1voto

Jacob Vlijm Points 78990

En dessous, le file --mime-type utilisée dans un script Python. Elle modifie les permissions du ou des types de fichiers que vous définissez pour les 'new_permissions', dans un répertoire donné (de manière récursive).

#!/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)

Copiez le script dans un fichier vide, dans la section head du script, définissez le répertoire, les mime-types à modifier et les nouvelles permissions, sauvegardez-le sous le nom de change_types.py .

Exécutez-le par la commande :

python3 /path/to/change_types.py

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X