Comment listr les files sur le terminal afin que nous puissions voir les types de files tels exécutable, ascii etc?

J'ai essayé de listr les files dans le directory en utilisant ls et en passant différentes options.

A-t-il la capacité de listr les types de files aussi? Je veux savoir quels sont exécutables, sharedlibs ou juste des files ASCII sans faire de command de file sur des files individuels.

Il ne montrera pas cette information.

Vous pouvez diriger la sortie de la find vers le file -f - , comme suit:

 $ find /usr/local/bin | file -f - /usr/local/bin: directory /usr/local/bin/apt: Python script, ASCII text executable /usr/local/bin/mint-md5sum: ASCII text /usr/local/bin/search: Bourne-Again shell script, ASCII text executable /usr/local/bin/gnome-help: Python script, ASCII text executable /usr/local/bin/office-vb.sh: ASCII text /usr/local/bin/pastebin: Python script, ASCII text executable /usr/local/bin/highlight: POSIX shell script, ASCII text executable /usr/local/bin/yelp: Python script, ASCII text executable 

Notez que find est utilisé à la place de ls car il imprimera le path complet, alors que ls n'imprimera que le nom du file. Par conséquent, si vous avez simplement besoin de faire cela avec les files de votre directory actuel, alors:

 ls | file -f - 

travaillerait.

ls ne fait pas ça. Son travail consiste à rendre count des métadonnées des files (permissions, horodatage, etc.) et non du contenu des files. Mais le file lui-même (combiné avec un joker shell pour listr tous les files):

 file * 

pour le directory actuel, ou

 file /some/directory/* 

dans un autre directory.

Si vous souhaitez combiner des métadonnées et des informations de contenu de file, vous pouvez combiner la sortie de ls et de file . Une façon consiste à organiser deux commands pour listr un file par ligne dans le même ordre, et utiliser l'utilitaire paste pour les combiner – quelque chose comme

 paste <(ls -dlog -- *) <(file -b -- *) 

(Cela utilise la substitution de process, qui est disponible dans les shells interactifs communs: bash, zsh, également dans ksh93). Si vous avez l'utilitaire de column , c'est un moyen pratique d'aligner les colonnes:

 paste <(ls -dlog -- *) <(file -b -- *) | column -ts $'\t' 

Si vous souhaitez afficher les champs dans un ordre différent, join plutôt les champs du nom de file. Je fais un peu de va-et-vient entre les espaces et les tabs pour faire face aux noms de files contenant des espaces et produire des résultats alignés verticalement.

 join -t $'\t' -1 2 -2 1 <(ls -dlog -- * | sed 's/^\([^ ][^ ]* *[^ ][^ ]* *[^ ][^ ]* *[^ ][^ ]* *[^ ][^ ]* *[^ ][^ ]*\) */\1\t/') \ <(file -- * | sed 's/: */\t/') | column -ts $'\t'