[bash] effectuer un ls sans afficher chemin des fichiers

effectuer un ls sans afficher chemin des fichiers [bash] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 17-11-2008 à 19:52:08    

Salut,
J'ai besoin pour un script bash de lister les fichiers qui se trouvent dans un répertoire (répertoire ./serveur/), mais sans afficher le chemin relatif du fichier.
J'aimerais donc savoir s'il existe un attribut de ls qui permet d'effectuer cette opération, parce que si c'est le cas je ne l'ai pas trouvé.
 
Merci d'avance!
A+

Reply

Marsh Posté le 17-11-2008 à 19:52:08   

Reply

Marsh Posté le 17-11-2008 à 20:04:58    

aller dans le répertoire puis lister le contenu du répertoire courant

cd ./serveur
ls


ls récursif

ls -R


ls récursif en filtrant sur le nom d'un fichier

ls -R | grep monfichier


comment veux tu lister des fichiers si tu ne dis pas à ls où ils se trouvent [:pingouino]

Message cité 1 fois
Message édité par o'gure le 17-11-2008 à 20:05:09

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 17-11-2008 à 20:06:43    

a coup de basename ?


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
Reply

Marsh Posté le 17-11-2008 à 20:09:19    

o'gure a écrit :

aller dans le répertoire puis lister le contenu du répertoire courant

cd ./serveur
ls


ls récursif

ls -R


ls récursif en filtrant sur le nom d'un fichier

ls -R | grep monfichier


comment veux tu lister des fichiers si tu ne dis pas à ls où ils se trouvent [:pingouino]


Merci pour ta réponse, mais en fait ce n'est pas ça le problème, je donne bien le répertoire où se trouvent les fichiers (ls ./serveur/*.*@$login).
Le problème c'est qu'il m'affiche à chaque fois le dit répertoire devant chaque fichier listé.


Message édité par real_mathos le 17-11-2008 à 20:09:33
Reply

Marsh Posté le 17-11-2008 à 22:54:05    

Ez:~ oxman$ ls Downloads/*.dmg | xargs basename
Parallels-Desktop-fr_FR-4.0.3522.206018.dmg
SCPlugin-0.7.2-1.4.6.dmg
TextMate_1.5.7.dmg
WhatPulse for Mac.dmg
Zooom_Latest.dmg
eve-001881_64451_mac.dmg
 


---------------
LeRobot : un bot discord qui permet faire des stats sur vos temps de jeux
Reply

Marsh Posté le 17-11-2008 à 23:36:02    

Merci pour ta réponse, c'est ce dont j'avais besoin!

Reply

Marsh Posté le 18-11-2008 à 10:15:39    

C'est pas comme si Le_Tolier t'avais donné la réponse... :o  

Le_Tolier a écrit :

a coup de basename ?


[:anathema]


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Marsh Posté le 18-11-2008 à 10:23:23    

Attention: c'est méthode ne te permettra pas de travailler sur une grosse liste de fichier.
Find est plus approprié pour ce genre de choses:
 


gandalf@scrubs:~$ find /tmp -maxdepth 1 -type f -exec basename {} \;
cd_lrsdemo_latest.iso.part
favicon.png
space.gif
README
Web License.rtf
.X0-lock
linux-2.6.27.4.tar.bz2
e1000-8.0.6.tar.gz
RAID_Web_Console_Linux.bin
RAID_Web_Console_Linux.jar
SqlDriver.php
Image LRS sous XEN.doc
.hpacucli
bla.csv
Linux WebConsole_readme.txt
Nicotine+-1.2.10svn.exe
Linbox_Rescue_Server_Installation-1.iso
bplogo.gif
ir2_Linux_Webconsole_v2.8-00-5.tgz


Message édité par M300A le 18-11-2008 à 10:23:49
Reply

Marsh Posté le 18-11-2008 à 20:07:07    

Autre methode fiable et portable si bash est installé :
 

Code :
  1. while read a; do echo "${a##*/}"; done < <(find /path)


 
ou aussi
 

Code :
  1. find /path | while read a; do echo "${a##*/}"; done


 
J'utilise seulement find et des "built-ins" bash ;)
"parameter expansion" et les "process substitution"

Reply

Marsh Posté le 19-11-2008 à 12:38:19    

Le plus rapide et qui fonctionnera meme avec des noms de fichier contenant des espaces serait:
 

Code :
  1. find /path -print0 | xargs -0 basename


 
Mais find propose aussi printf et en une seule commande on a:
 

Code :
  1. find /path -printf "%f\n"



---------------
[:arsunik]  Les tournois de badminton
Reply

Marsh Posté le 19-11-2008 à 12:38:19   

Reply

Marsh Posté le 21-11-2008 à 12:05:59    

find /path -printf "%f\n"


 
Pas mal celle là :)
Par contre xargs, je suis pas fan. Jamais besoin de lui, ya d'autres façons de nettoyer les "\n" "\t" et espaces.

echo *

Reply

Marsh Posté le 21-11-2008 à 12:08:40    

e_esprit a écrit :

C'est pas comme si Le_Tolier t'avais donné la réponse... :o  


 


je suis comme les grands artistes ignorés de mon vivant mais je serais reconnu après ma mort  [:zytrasnif]


---------------
Never f**k with your systems administrator. Why? Because they know what you do with all that free time! |?? | SAVE Jericho !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed