J'utilise Mac OSX et j'essaie d'utiliser la ligne de commande pour trouver le nombre de fichiers que j'ai avec le même nom.
J'ai essayé d'utiliser la commande suivante:
find ~ -type f -name "*" -print | basename | sort | uniq -d > duplicate_files
Ça ne marche pas! Quand je fais ce qui suit:
find ~ -type f -name "*" -print > duplicate_files
Ensuite, duplicate_files contient les chemins de tous mes fichiers. Je pense donc que le problème est avec basename
- il n'accepte pas l'entrée standard. J'ai ensuite essayé ce qui suit:
basename $(find ~ -type f -name "*" -print) > duplicate_files
mais encore une fois cela ne semble pas fonctionner. La recherche sur Internet ne semble pas apporter beaucoup de joie. Toutes les pensées les bienvenues.
Pourquoi ne pas utiliser les fonctionnalités
find
intégrées pour afficher uniquement le nom de fichier:(suppose GNU
find
) ou au moins quelque chose comme ça:basename
impossible de lire via un canal ou de traiter plusieurs fichiers à la fois.ps. Il n'est pas nécessaire de spécifier
-name '*'
si vous souhaitez répertorier tous les fichiers. Il s'agit d'une option par défaut.la source
basename: unknown primary or operator
. Merci pour l'astuce-name "*"
-printf
même dans la page de manuel posix. À propos de l'erreur avec la deuxième façon, c'est la cause d'une faute de frappe dans ma réponse. Fixé. Pourriez-vous s'il vous plaît l'essayer une fois de plus?-printf
je reçois le-printf: unknown primary or operator
. De plus, lorsque j'ai vérifié l'Unix dans un livre de référence Nutshell, il est répertorié comme une option GNU / Linux - ne dit rien sur OSXman find
dans votre console :)Cela semble fonctionner pour moi sur OSX:
la source
+
signifie dans la commande?-a
option pour couvrir ce cas.Alternatives (suppose qu'il n'y a pas de nouvelle ligne dans les noms de fichiers):
la source
Vous pouvez utiliser
xargs
avecbasename
pour obtenir la sortie souhaitée, comme ceci:la source
Avec une version récente
bash
qui gère les tableaux associatifs, les éléments suivants gèrent en outre les chemins d'accès avec des retours à la ligne intégrés:Cela n'utilise aucun utilitaire externe.
la source