2017-03-09 10 views
0

Par tâtonnement j'ai trouvé que les valeurs suivantes peuvent être retournées par stat "$somepath" --format '%F':

  1. régulière fichier

  2. répertoire

  3. lien symbolique

Je souhaite utiliser stat pour effectuer des opérations de contenu de répertoire récursives et je souhaite m'assurer que je peux correctement identifier tous les types de fichiers possibles. Les liens physiques semblent se comporter comme je le pensais et stat renvoie le type de cible.

Cette information n'apparaît pas dans ma page man; il dit seulement: %F file type

(et il avertit que stat peut varier entre les coquilles, ce serait bien si cet usage particulier était portable mais je suis surtout concentré sur bash)

Cette liste est complète et est stat autorisé à changer quel texte il produit dans ce cas en fonction de l'environnement d'exécution ou de la version?

NB: Je ne suis pas bien informé sur linux, systèmes de fichiers ou commandes afin que je puisse avoir manqué quelque chose évidente ici

Répondre

1

Attention: la sortie de stat est convention versions et différentes de stat (de différents auteurs et de l'utilisation historique) ainsi que différentes versions de la même statistique peuvent et retournent des résultats différents.

Les types de fichiers que je peux me rappeler en fait voir lorsque vous travaillez avec des fichiers (YMMV) sont:.

  • fichier régulier * (fichier régulier vide est une distinction entertainingly souvent négligé)
  • annuaire
  • lien symbolique
  • fifo
  • . * fichier spécial
  • socket
  • sémaphore
  • port
  • .* objet mémoire

En général, si vous vous intéressez aux fichiers, il est préférable d'utiliser une librairie de gestion de fichiers dans un langage de programmation de votre choix qui aura été développé pour pouvoir identifier un fichier avec précision ; en ligne de commande et les scripts ne sont pas une façon très robuste de faire les choses

Voici quelques liens vers principalement la mise en œuvre gnu de stat si vous voulez creuser plus profond:

GNU Findutils documentation

Old GNU Findutils documentation

Common file types

The man page is fairly uninformative as you suggest

GNU stat related source code

GNU file type related source code