11
votes

Liste des propriétaires de fichiers dans le dossier sur Linux

J'ai un dossier avec de nombreux fichiers. Les fichiers ont été créés par de nombreux utilisateurs différents. Je ne sais pas sur les scripts shell.

Je dois obtenir la liste du nom d'utilisateur (uniquement) des propriétaires des fichiers.

Je peux enregistrer la sortie de LS -L, puis l'analyser à l'aide de Perl Python, etc.

Mais comment puis-je faire cela en utilisant des scripts shell?


0 commentaires

3 Réponses :


9
votes

Un simple est un xxx

qui vous obtient une liste unique et triée de propriétaires.


7 commentaires

@Danielkamilkozar qui était une bonne lecture, mais la peine de se préoccuper que si vous avez des fichiers étrangement nommés.


@gmeben: Depuis quand les espaces sont-ils considérés comme bizarres?


@Danielkamilkozar Peut-être que ce n'est pas étrange, mais si vous autorisez les noms de fichiers blancheurs dans les noms de fichiers de votre système, il y a de plus gros problèmes à portée de main.


Pour passer à travers le répertoire de manière récursive, ajoutez le commutateur r sur la commande ls la commande: ls -lr / certains / dir / certains / où | awk '{improvité 3}' | Trier | UNIQ .


Pour inclure une liste plus complète d'utilisateurs qui inclut également des informations de groupe, suggérez la commande dans la réponse ci-dessus être modifiée en LS -LAR / ONES / DIR / DIR / ON quel awk '{IMPRESSION 3 $, $ 4}' | Trier | UNIQ . Merci, @Abdull, pour la suggestion -r .


Ou, que diriez-vous de cette monstruosité: LS -LAR * 2> / dev / null | grep -e "^ [- BCDLPS] [^] [^] [^] [^] [^] [^] [^] [^] [^]" | awk '{IMPRESSION 3 $, $ 4}' | Trier | UNIQ . Toute rationalisation est la bienvenue ...


Les gens, les gens - c'est ce que la commande trouver est signifiait pour. Essayez quelque chose comme ceci: trouver / certains / dir / certains / où -execdir stat -c "% u" {} + | Trier | UNIQ .



10
votes
stat -c "%U" *| sort -u

0 commentaires

5
votes

Les deux solutions jusqu'à présent sont bonnes, mais ont leurs limites.

Ceci devrait vous garantir correctement et rechercher récursivement chaque fichier dans un arborescence de répertoire. P>

sudo find /some/dir/ -type f -exec stat -c "%U" {} + | sort | uniq
                     _______


2 commentaires

Sur FreeBSD: Trouver / Quelque / Dir / Dir / -Type F -exec Stat -F "% su" {} + | Trier | UNIQ . Op est à la recherche de fichiers uniquement, donc j'ai ajouté -type f .


@SIMLEV Je pense à Linux, "Files" est le nom générique de toute telle chose dans un répertoire, y compris des répertoires, qui ne sont que des fichiers spéciaux. Si vous recherchez juste fichiers réguliers , alors oui ajoutez -type f .