2 votes

Comment supprimer tous les exécutables Mach-O dans un répertoire via Terminal?

Supposons que je place tous mes codes C et les exécutables dans ~/anta40/Codes/C.

Supprimer tous les codes C via le Terminal est facile :

rm *.c

Ma question est comment supprimer tous les exécutables Mach-O (à partir de la compilation des codes C). Sur Windows, c'est très facile, car les exécutables ont généralement l'extension exe, donc vous faites simplement :

del *.exe

Je pense que c'est plus compliqué sur MacOS car les exécutables n'ont généralement pas d'extension spécifique. file peut être utile, par exemple :

$ file sortdemo
sortdemo: Mach-O 64-bit executable x86_64

Aucune idée pour le reste.

0 votes

L'extension ne vous dit rien. Vous ne pouvez pas non plus conclure de l'extension .c, que ce doit être un fichier source C. Dans votre cas, je parcourrais tous les fichiers, appliquerais la commande file (qui, en passant, n'est pas non plus infaillible à 100 %), et supprimerais le fichier si file croit que c'est un exécutable Mach-O.

2voto

nohillside Points 82672

En supposant qu'aucun nom de fichier ne contienne d'espaces ou d'autres caractères "amusants", quelque chose comme

rm -i $(file * | grep Mach-O | cut -d : -f 1)

devrait faire l'affaire.

PS: rm -i vous demandera confirmation pour chaque fichier. Si vous êtes sûr que seuls les fichiers corrects sont sélectionnés, vous pouvez supprimer le -i.

0 votes

Est-ce que cela gérera les noms de fichiers contenant des espaces?

1 votes

@gidds Non, ça ne le sera pas. Mais les gens qui utilisent des espaces dans le nom des binaires Unix sont bien plus courageux que je ne le serai jamais :-)

1 votes

Vous pourriez être surpris... Une recherche dans mon dossier /Applications trouve 108 exécutables Mach-O avec un espace dans le nom de fichier. (Cela ne vérifie que le nom de base, en excluant beaucoup d'autres dans des répertoires avec des espaces.) Certains sont assez obscurs, mais pas tous, par exemple Google Chrome.app/Contents/MacOS/Google Chrome. Quoi qu'il en soit, il est important de connaître cette limitation.

1voto

Jose Chavez Points 645

Comme il s'agit spécifiquement de code C et des exécutables qui en découlent, je tiens simplement à ajouter que cela est généralement géré par votre outil de compilation.

Un des outils de compilation les plus populaires pour le code C est le programme make. Généralement, vous écririez la commande make pour créer les exécutables, et make clean pour les supprimer ainsi que d'autres fichiers générés par la suite.

Plutôt que de supprimer manuellement des fichiers Mach-O (ce qui pourrait dans certains cas supprimer plus ou moins que ce que vous souhaitez), je recommanderais d'utiliser un outil de compilation.

0 votes

Il faut toujours définir la règle clean dans le Makefile.

1 votes

Bien sûr. Vous ne le feriez jamais en recherchant des fichiers Mach-O.

1 votes

Bien sûr, il pourrait être utile d'ajouter une règle d'exemple. Pour des projets plus importants, j'utiliserais probablement même un répertoire de construction dédié.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X