Il s'agit du comportement par défaut de ls
ls /net/nas/data/languages/pypm/sites/rex/free/2.6/*/pool/v/vi/virtual*1.4.4*pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/linux-x86/pool/v/vi/virtualenv-1.4.4_linux-x86_2.6_1.pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/linux-x86_64/pool/v/vi/virtualenv-1.4.4_linux-x86_64_2.6_1.pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/macosx/pool/v/vi/virtualenv-1.4.4_macosx_2.6_1.pypm
/net/nas/data/languages/pypm/sites/rex/free/2.6/win32-x86/pool/v/vi/virtualenv-1.4.4_win32-x86_2.6_1.pypm
Comment faire ls
imprimer uniquement le nom de base? Comme:
ls $OPTIONS /net/nas/data/languages/pypm/sites/rex/free/2.6/*/pool/v/vi/virtual*1.4.4*pypm
virtualenv-1.4.4_linux-x86_2.6_1.pypm
virtualenv-1.4.4_linux-x86_64_2.6_1.pypm
virtualenv-1.4.4_macosx_2.6_1.pypm
virtualenv-1.4.4_win32-x86_2.6_1.pypm
Remarque : je préfère la globalisation du shell plutôt que l'utilisation find
de / net / nas / data / languages / pypm / sites / rex / free contient un grand nombre de fichiers et de répertoires.
linux
command-line
unix
ls
Srid dit réintégrer Monica
la source
la source
-maxdepth 1
àfind
.Réponses:
Bien que
xargs -0
soit destiné à être utilisé pour une entrée délimitée par \ 0 (commefind -print0
), ills
n'a pas une telle option pour délimiter sa sortie de cette manière.cependant,
ferait l'affaire pour convertir les sauts de ligne en valeurs nulles en cours de route. Cela permet alors aux xargs de travailler avec des noms qui ont des espaces.
EDIT: ajouté
-n 1
à xargsla source
basename: extra operand
\ 033 [0m / net / nas / data / languages / pypm / sites / rex / free / 2.6 / macosx / pool / v / vi / virtualenv-1.4.4_macosx_2.6_1.pypm \ 033 [ 0m ''-n 1
vous avez suggéré ailleurs comme optionxargs
? (réponse modifiée)-d
option (délimiteur), vous pouvez le fairels ... | xargs -d '\n' -n 1 basename
.J'utilise ceci:
Il donne une liste comme:
la source
ls -1
(et la coloration est désactivée), comme l'ls
indique ceux qui n'écrivent pas sur un terminal. Il semble que vous manquiez un peu le point, car le problème supprime le nom du répertoire lorsque vous spécifiez desls
arguments de chemin à l'aide de caractères génériques . Essayezls -d "$PWD/"* | tr '\n' '\n'
de voir quel est le problème réel.ls -1
, mais il ne fonctionne pas non plus lorsque des globes ont été utilisés, comme l'a souligné Daniel Beck.ls -1
, et ne fonctionne que dans le répertoire courant, pas avec un chemin commels path/*
.la source
awk
Solution:la source
ls [chemin facultatif] | xargs -0 nom de base
la source
xargs -0
est recherché.Le nom de base GNU et le nom de base FreeBSD acceptent un
-a
argument vous permettant de passer plusieurs chemins à la commande. Cela fonctionne très bien avec globbing shell.la source
Vous avez dit que vous préfériez la globulation
find
, mais saviez-vous que les deux ne s'excluent pas mutuellement? La globalisation se produit sur n'importe quelle commande que vous exécutez, pas seulementls
. Par exemple:Notez que l'exemple de recherche peut utiliser -print0 qui est pratique si vos chemins contiennent des espaces blancs (les
tr
solutions basées sur ailleurs mentionnées fonctionnent très bien sur les espaces normaux, mais pas sur les fichiers contenant des sauts de ligne réels).Enfin, si vous avez accès à GNU find, vous pouvez également utiliser -printf qui évite complètement l'appel du nom de base:
la source
-printf
option n'est pas disponible dans la version MacOSX defind
.allez dans le répertoire où vous avez tous vos fichiers et tapez.
la source
find
.find . -name '*pypm'
cas échéant ... simplement mettre le glob à côté pour trouver ne donne rien - alors vous pourriez simplement écrirels *.pypm
.)