Comment puis-je lister tous les fichiers d'un dossier mais pas leurs dossiers ou sous-fichiers. En d'autres termes: Comment puis-je lister uniquement les fichiers?
Utiliser find
:
find . -maxdepth 1 -type f
L'utilisation de l'option -maxdepth 1
Garantit que vous ne regardez que dans le répertoire actuel (ou, si vous remplacez le .
Par un chemin, ce répertoire). Si vous voulez une liste récursive complète de tous les fichiers de ce répertoire et de ses sous-répertoires, supprimez cette option.
ls -p | grep -v /
ls -p vous permet d'afficher/après le nom du dossier, qui agit comme une balise à supprimer.
La réponse de carlpett find
(find . -maxdepth 1 -type f
) fonctionne en principe, mais est pas tout à fait comme si vous utilisiez ls
: vous obtenez potentiellement non trié la liste des noms de fichiers all précédé de ./
, et vous perdez la possibilité d'appliquer ls
nombreux options;
également find
invariablement trouve caché éléments aussi , alors que le comportement de ls
dépend de la présence ou de l'absence des options -a
ou -A
.
Une amélioration , suggérée par Alex Hall dans un commentaire sur la question consiste à combiner Shell globbing avec find
:
find * -maxdepth 0 -type f # find -L * ... includes symlinks to files
ls
de nombreuses autres options de tri/format de sortie.La réponse de ls
+ grep
de Hans Roggeman est pragmatique, mais vous oblige à utiliser le format de sortie long (-l
) .
Pour remédier à ces limitations, j’ai écrit le fls
( f iltering utilitaire ls ,
ls
, tout en offrant également la capacité de filtrage de type,f
pour les fichiers, d
pour les répertoires et l
pour les liens symboliques avant une liste d’arguments ls
(exécutez fls --help
ou fls --man
pour apprendre plus).Exemples:
fls f # list all files in current dir.
fls d -tA ~ # list dirs. in home dir., including hidden ones, most recent first
fls f^l /usr/local/bin/c* # List matches that are files, but not (^) symlinks (l)
Plateformes prises en charge
Remarque: Même si vous n'utilisez pas Node.js, son gestionnaire de paquets, npm
, fonctionne sur toutes les plates-formes et est facile à installer. essayercurl -L https://git.io/n-install | bash
Avec Node.js installé, installez-le comme suit:
[Sudo] npm install fls -g
Remarque :
Que vous ayez besoin ou non de Sudo
dépend de la façon dont vous avez installé Node.js/io.js et du fait que vous avez modifié les autorisations ultérieurement ; Si vous obtenez une erreur EACCES
, essayez à nouveau avec Sudo
.
Le -g
Garantit global installation et est nécessaire pour insérer fls
dans le système $PATH
De votre système.
bash
sous la forme fls
.chmod +x fls
.$PATH
, Tel que /usr/local/bin
(MacOS) ou /usr/bin
(Linux).Vous pouvez également utiliser ls
avec grep
ou egrep
et le placer dans votre profil comme alias:
ls -l | egrep -v '^d'
ls -l | grep -v '^d'