Y at-il une commande qui me dit dans le répertoire spécifique quels types de fichiers existent?
Je peux trouver le type de fichier en utilisant une commande telle que od -c myfile | less
.
Mais je ne sais pas comment le faire pour tous les fichiers d'un répertoire.
Bien que od -c
affichera effectivement le contenu d'un fichier, ce n'est pas un bon moyen d'obtenir son type de fichier. Bien que certains fichiers contiennent un en-tête avec le type de fichier, ils ne le seront pas tous. Une meilleure façon est la commande file
:
$ echo "hello" > foo.txt
$ file foo.txt
foo.txt: ASCII text
Donc, pour obtenir une liste de tous les types de fichiers dans un répertoire, vous pouvez faire:
for file in dir/*; do file "$file" | cut -d: -f 2; done | sort -u
PNG image data, 1500 x 500, 8-bit/color RGBA, non-interlaced
ASCII text
directory
GIF image data, version 89a, 22 x 22
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=becf821e4d814fdb69306d0b3f686eb06992f5e5, stripped
for file in dir/*; do ... done;
: parcourir tout le contenu de dir
(dir
est juste un exemple, vous devriez changer ceci en nom du répertoire réel dans lequel vous voulez chercher), en enregistrant chaque élément sous le nom $file
file "$file"
: exécutez file
sur chacun des éléments trouvés.cut -d: -f 2
: affiche uniquement le deuxième champ (champs définis par :
)sed 's/^ //; s/ +/ /g'
: supprime les espaces du début de la ligne et convertit les espaces consécutifs en un seul espace.sort -u
: supprimer les types de fichiers en doubleJe ferais probablement quelque chose comme ça -
find . -type f -exec file {} \;
Cela recherchera des fichiers dans le chemin actuel (par exemple, aucun répertoire), puis exécutera la commande file
sur chaque fichier.
Essaye ça:
ls | xargs file -b | sort | uniq
Comment ça marche:
ls: liste le contenu du répertoire
file -b: détermine le type de fichier; ne pas ajouter de noms de fichiers aux lignes de sortie
sort: lignes de tri
niq: omettre les lignes répétées