1 votes

cat tous les fichiers sauf quelques uns

S'il y a une syntaxe particulière pour que je puisse cat tous les fichiers d'un répertoire, sauf ceux qui sont sélectionnés. Par exemple, supposons que j'ai ~1200 fichiers texte contenant quelques lignes, environ 3 ou 4 lignes par fichier, sauf qu'il y a quelques fichiers :

readme.md
contrib.rst
licence.txt

qui sont plus longs. Je veux voir le contenu de tous les fichiers sauf les 3 (ou si possible, plus) fichiers mentionnés ci-dessus.

J'ai essayé la commande suivante :

cat !{readme.md,contrib.rst,licence.txt}*.*

parce que j'ai vu quelque part une utilisation de cat comme suit :

cat [!t][!m][!p]*.sh

Je le pensais depuis, {a,b} signifie un ensemble dans bash-scripts, la négation de cela devrait fonctionner. Bien sûr, j'avais tort.

4voto

Rachel Blackman Points 81

Essayez ceci avec la fonction de correspondance de motifs étendue de bash :

shopt -s extglob
cat !(readme.md|contrib.rst|licence.txt)

2voto

Rachel Blackman Points 81

Essayez ceci avec bash :

GLOBIGNORE="readme.md:contrib.rst:licence.txt"
cat *
unset GLOBIGNORE

1voto

Hennes Points 63532

Qu'avez-vous déjà essayé ?

Est-ce que ce sont toujours les mêmes fichiers que vous voulez sauter.

Dans ce cas, vous pourriez les coder en dur dans une commande. Par exemple, quelque chose comme
find ! -name readme.md -o ! -name contrib.rst -o ! -name licence.txt -exec cat {} \+

Maintenant, si vous voulez quelque chose qui saute tous les fichiers de plus de 4 lignes sans connaître les noms de fichiers à l'avance, la solution sera évidemment plus complexe. Dans ce cas, veuillez modifier votre message.

1voto

Hastur Points 17791

Sans modifier le paramètre actuel de Shell. il est possible d'exécuter chacune des propositions de Cyrus dans un sous-shell

(GLOBIGNORE="readme.md:contrib.rst:licence.txt" ; cat *)

ainsi que

(shopt -s extglob; cat !(readme.md|contrib.rst|licence.txt))

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X