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. P>
Je dois obtenir la liste du nom d'utilisateur (uniquement) des propriétaires des fichiers. P>
Je peux enregistrer la sortie de LS -L, puis l'analyser à l'aide de Perl Python, etc. P>
Mais comment puis-je faire cela en utilisant des scripts shell? p>
3 Réponses :
Un simple est un qui vous obtient une liste unique et triée de propriétaires. p> p>
@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 code> sur la commande
ls code> la commande:
ls -lr / certains / dir / certains / où | awk '{improvité 3}' | Trier | UNIQ code>.
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 code>. Merci, @Abdull, pour la suggestion
-r code>.
Ou, que diriez-vous de cette monstruosité: LS -LAR * 2> / dev / null | grep -e "^ [- BCDLPS] [^] [^] [^] [^] [^] [^] [^] [^] [^]" | awk '{IMPRESSION 3 $, $ 4}' | Trier | UNIQ code>. Toute rationalisation est la bienvenue ...
Les gens, les gens - c'est ce que la commande trouver code> est signifiait i> pour. Essayez quelque chose comme ceci:
trouver / certains / dir / certains / où -execdir stat -c "% u" {} + | Trier | UNIQ code>.
stat -c "%U" *| sort -u
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 _______
Sur FreeBSD: Trouver / Quelque / Dir / Dir / -Type F -exec Stat -F "% su" {} + | Trier | UNIQ code>. Op est à la recherche de fichiers i> uniquement, donc j'ai ajouté
-type f code>.
@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 i>, alors oui ajoutez -type f code>.