Comment ls sans récursivité

19

J'essaie de ls certains fichiers avec un modèle dans un répertoire. Je veux seulement scanner le premier niveau non récursif.

Mon script:

for i in $(ls $INCOMINGDIR/*$BUSSINESSDATE*)
do
  echo $i;
done

La commande ci-dessus balaye récursivement. Comment peut-il faire uniquement pour analyser le répertoire de premier niveau?

Sas
la source
printf %s\\n "$INCOMINGDIR/"*"$BUSINESSDATE"*
mikeserv

Réponses:

39

Ne pas analyserls . En outre ne pas utiliser ALL_CAPS_VARS

for i in "$incoming_dir"/*"$business_date"*; do

Interactivement, lsa une -doption qui empêche de descendre dans les sous-répertoires:

ls -d $INCOMINGDIR/*$BUSSINESSDATE*
glenn jackman
la source
Merci pour l'info, je vais commencer à créer des fichiers avec de nouvelles lignes dans le nom juste pour ennuyer les administrateurs système maintenant.
Petah
C'est pourquoi le sysadmin / programmeur intelligent utilise "${i}". On ne sait jamais ce qu'il pourrait y avoir i.
Ricky Beam
@Petah: ou quelqu'un avec de mauvaises intentions pourrait créer un fichier nommé my_file.doc[newline]another_persons_file.docet espérer que certains scripts pourraient essayer de "rm" ce qu'il considère comme 2 noms de fichiers ... Le lien de Glenn est une lecture incontournable (sur mywiki.wooledge.org, tout le monde devrait lire toute la faq, et aussi la page des pièges)
Olivier Dulac
1
cool. je ne connaissais pas l'option -d!
dokaspar
Génial! Cela fonctionne aussi pour les choses plus simples. Tels que la liste de tous les fichiers préfixés par des points:ls -d .*
Wassadamo
8

Il n'y a aucune raison pour que cette commande soit récursive. Mais s'il $INCOMINGDIR/*$BUSSINESSDATE*correspond à un répertoire, le contenu de ce répertoire est affiché à la place du répertoire lui-même. Mais il n'y aurait pas de récursivité au-delà de ce niveau.

Utilisez cette commande pour éviter cet effet:

ls -d "$INCOMINGDIR/"*"$BUSSINESSDATE"*

for ... inles commandes avec lssortie sont risquées.

findSemble en général une meilleure solution ou

for i in "$INCOMINGDIR/"*"$BUSSINESSDATE"*
Hauke ​​Laging
la source