Le contenu de mon répertoire est
$ ls -lrt
total 0
-rw-r--r-- 1 user1 admin 19 Oct 8 12:31 night.txt
-rw-r--r-- 1 user1 admin 19 Oct 8 12:31 noon.txt
-rw-r--r-- 1 user1 admin 38 Oct 8 12:31 day.txt
Je voudrais énumérer les détails des fichiers qui ont un mot dans le nom du fichier tel que spécifié.
Exemple :
$ ls -lrt *day|night*
ls: *day: No such file or directory
bash: night.txt: command not found
Production attendue
-rw-r--r-- 1 user1 admin 19 Oct 8 12:31 night.txt
-rw-r--r-- 1 user1 admin 38 Oct 8 12:31 day.txt
Comment lister différents fichiers correspondant à 2 partenaires différents, ou en bref comment utiliser regex avec ls
, de sorte que je puisse OR
les parties du nom de fichier.
Les scènes originales, il y a beaucoup de fichiers dans le répertoire, ont raccourci le cas pour demander.
touch day.txt; touch night.txt; ls {*day,night*}
résultatsls: *day: No such file or directory
*{day,night}*
- être plus proche de ce que le PO veut.Il n'y a pas d'option
ls
pour filtrer par nom de fichier, mais dans la plupart des shells, il y a une extension globbing.man bash
/Pattern Matching
ksh
zsh
ou:
frapper
Vous pouvez le faire dans n'importe lequel de ces trois shells, mais notez que si l'un des cas ne correspond à aucun fichier, ce modèle restera non développé (par exemple,
*day* night1.txt othernight.txt
s'il n'y a pas de nom de fichier contenantday
; voirman bash
/EXPANSION
ou/Brace Expansion
spécifiquement):Dans n'importe quelle coquille, vous pouvez faire:
Dans zsh, s'il n'y a pas
day
ounight
fichier, les deux dernières commandes échoueront; définissez l' optionnonomatch
oucsh_null_glob
, ou ajoutez(N)
après chaque motif pour éviter cela.la source
*{day,night}*
. Je l'éditerais, mais je ne sais pas quel shell le supporte?bash
,ksh
etzsh
(aucun n'a besoin d'être étendu), mais passh
- cependant, le dernier exemple de "tous les obus" de Nahuel fonctionne danssh
.Les shells n'utilisent pas d'expressions régulières pour développer les arguments.
Vous pouvez activer la correspondance étendue de motifs en
puis
Voir, par exemple, le manuel de référence Bash (Pattern Matching)
la source