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?


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*

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"*
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.