Question Ouvrez tous les fichiers journaux dans le répertoire et le sous-répertoire en une seule commande


J'ai un annuaire ~/temp avec des fichiers journaux. Ce répertoire contient un autre répertoire ~/temp/aaa qui contient également plusieurs journaux. Je voudrais ouvrir tous les fichiers journaux en même temps. je fais

vim -p *

Il ouvre les fichiers dans le répertoire en cours et c'est bien, mais il ouvre aussi le répertoire aaa avec la liste des fichiers dans le contenu et je voudrais l'omettre. De plus, aucun fichier n'est ouvert dans aaa annuaire. Je pourrais ajouter /aaa/* into command, mais son n'est pas bon puisque le nom du répertoire peut changer et j'aimerais avoir une commande plus universelle.

Comment énumérer tous les fichiers du répertoire et du sous-répertoire pour vim?


1
2018-01-31 13:52


origine




Réponses:


Vous pouvez utiliser la commande suivante qui s'ouvrira vim avec onglet pour chaque fichier sous le répertoire courant:

vim -p `find -L . -type f -print`

Ou la commande suivante qui ouvrira tous les fichiers du répertoire en cours, ainsi que tous les fichiers de tous les répertoires de premier niveau du sous-répertoire en cours.

vim -p ./* ./*/*

La commande ci-dessus est basée sur l'exécution vim -p avec exemple de réponse similaire qui peut être trouvé ici


Quelques exemples (modifiés) de la réponse étendue va ouvrir vim pour chaque fichier sous le répertoire en cours, et une fois vim sera fermé, ouvrira vim à nouveau pour le fichier suivant, etc.:

find . -xtype f -exec vim {} \;

Ou

find -L . -type f -exec vim {} \;

0
2018-01-31 13:57



Est-ce globstar et extglob dans le dernier? Si oui, vous devriez mentionner comment activer ces options. - dessert
Si vos noms de fichiers ont des espaces ou des caractères spéciaux IIRC qui trouvent la commande à modifier, consultez print0 flag, et éventuellement besoin xargs. - pbhj
@pbhj - Merci pour votre commentaire, ce qui est correct pour la vim -p `find xxx -print`  commander! Notez que: les deux exemples avec find xxx -exec vim {} \l; fonctionne bien même avec les noms de fichiers qui incluent des espaces. - Yaron