À partir de la ligne de commande, quelle est la manière la plus simple d'afficher le contenu de plusieurs fichiers? Mon répertoire ressemble à ci-dessous.
./WtCgikkCFHmmuXQXp0FkZjVrnJSU64Jb9WSyZ52b
./xdIwVHnHY7dnuM9zcPDYQGZFdoVORPyMVD2IzjgM
./GZnATXO1e5Hh3Bz1bhgJjjwheIjjZqtnXR0hfOyj
./mWz7ehBNoTZmtDh8JG6sxw2lMJFwIovPzxDGECUY
./JN65F5v3RL2ilHPqNSx9N9D4lvVpqpbJ9lASd8TJ
./At9PS4y4nTiXUO0Z0USnbYkTPBla1msQRpwuruqE
./YiPyMZPCaUDZTiTczAvWII9bJrUqLXCFtH2pXEA2
./JoakdlbRFPwAvWp1d4n8RvMoyMeizCoiriL2Sn2U
./wFPWZUus8Yu7UtESGABLCoqDg36cT90USO0xuyUr
./qseI9PgV1EJfZCDyGGeVytajqG7JeX0r7eA5S1JW
./zgFJpNgXyCsaVh38aCuMGuzHwIbwSNB6rQDdh27x
./.htaccess
Maintenant, je voudrais voir le contenu de tous les fichiers sauf .htaccess
. Cela pourrait ressembler à quelque chose comme:
WtCgikkCFHmmuXQXp0FkZjVrnJSU64Jb9WSyZ52b:
Contents of file WtCgikkCFHmmuXQXp0FkZjVrnJSU64Jb9WSyZ52b.
xdIwVHnHY7dnuM9zcPDYQGZFdoVORPyMVD2IzjgM:
Contents of file xdIwVHnHY7dnuM9zcPDYQGZFdoVORPyMVD2IzjgM.
[...]
Je pense que cela devrait être faisable avec une combinaison de find, xargs et cat, mais je n'ai pas compris comment. Merci pour votre temps!
command-line
files
Znarkus
la source
la source
Réponses:
Les deux commandes standard
head
ettail
affichent un en-tête avec le nom de fichier si vous leur passez plus d'un argument de fichier. Pour imprimer tout le fichier, utiliseztail -n +1
(imprimer à partir de la première ligne, c'est-à-dire tout).Ici, il semble que vous souhaitiez voir tous les fichiers, sauf celui dont le nom commence par un point. Les fichiers à points sont «cachés» sous unix: ils n'apparaissent pas dans la sortie par défaut
ls
ou dans une correspondance générique. Donc, faire correspondre tous les fichiers non cachés se fait simplement*
.(Strictement parlant,
tail -n +1 -- *
est nécessaire dans le cas où l'un des noms de fichier commence par a-
.)la source
--
modificateur?--
signifier la fin des options est une convention à laquelle obéissent la plupart des commandes. Par exemple,tail -n +1 -- -f -g
indiquetail
que-f
et-g
sont des fichiers à lire (opérandes) et non des options. Il s'agit de la directive 10 dans la directive de syntaxe de l'utilitaire POSIX (un document destiné aux rédacteurs d'utilitaires). Je n'ai pas de suggestion de lecture destinée aux utilisateurs finaux, je m'attends à ce qu'un bon tutoriel Unix le couvre à un moment donné.find
, mais ensuite utiliser certains exec avec impression formatage: Une façon simple à utiliserfind
ettail
est:find . -type f -print0 -name "*" | xargs -0 tail -n +1 --
(-print0
etxargs -0
et--
veiller à ce que la commande fonctionne également avec les noms de fichiers avec des espaces ou en commençant par -)Vous pouvez tout faire en un avec
find
:Cela indique
find
de trouver tous les fichiers (-type f
) dans le répertoire courant (.
) sauf (-not
) celui nommé.htaccess
(-name .htaccess
). Ensuite, il affiche (-printf
) une nouvelle ligne suivie du nom de fichier (%p
), puis s'exécutecat
sur le fichier (-exec cat {} \;
). Cela vous donnera une sortie comme:Si vous le faites souvent, cela peut valoir la peine de le coller dans un script shell ou une fonction; J'en ai un nommé
cats
qui fait exactement cela:Il boucle sur chaque argument de nom de fichier, imprime le nom de fichier (en vert gras), puis cat le fichier:
Alors la commande serait juste:
la source
Pour afficher le contenu de tous les fichiers du dossier actuel, essayez:
et similaire, mais récursivement:
Le format serait:
filename: content
.Pour avoir un format similaire à celui suggéré, ce serait:
Notes annexes:
\x00
) dans les exemples ci-dessus empêche d'afficher les fichiers binaires (ce qui-I
est effectivement le cas, mais nous devons toujours utiliser un modèle).*
), il ignore automatiquement les fichiers cachés tels que.htaccess
.Voir aussi: grep: afficher le nom de fichier une fois, puis afficher le contexte avec les numéros de ligne sous Unix SE
la source
grep -r ^
Est généralement suffisant.Vous pouvez utiliser ceci:
la source
Si vous voulez affiner et ne perdez pas trop de temps avec les tuyaux, trouvez et tout (bien qu'il s'agisse de la chaîne d'outils la plus puissante que vous puissiez trouver)
essayez simplement d'utiliser une boucle for, un chat, etc.
la source
Si vous souhaitez aussi l'imprimer récursivement (pour les fichiers avec l'extension .sql par exemple):
la source