Ceci est le 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 coque globale sur l'utilisation de find
AS/NET/NAS/DATA/LANGUES/SITESS/SITES/REX/GRATUITS contient un grand nombre de fichiers et de répertoires.
Tandis que xargs -0
est destiné à être utilisé pour l'entrée délimitée par\0 (comme find -print0
), ls
n'a pas une telle option pour délimiter sa production de cette manière.
Pourtant,
ls -1 /path/glob | tr '\n' '\0' | xargs -0 -n 1 basename
ferait le tour pour convertir les nouvelles lignes en nulls en cours de route. Cela permet ensuite à Xargs de travailler avec des noms qui ont des espaces.
Edit: Ajouté -n 1
à Xargs
J'utilise ceci:
ls | tr '\n' '\n'
Il donne une liste comme:
file1.mp3
file2.mp3
file3.mp3
...
ls [chemin optionnel] | Xargs -0 BaseName
Vous avez dit que vous préférez Globbing sur find
, mais saviez-vous que les deux ne sont pas mutuellement exclusives? Globbing se produit sur n'importe quelle commande que vous exécutez, pas seulement ls
. Par exemple:
$ export BASE=/net/nas/data/languages/pypm/sites/rex/free/2.6
$ echo $BASE/*/pool/v/vi/virtual*1.4.4*pypm | xargs basename
$ ls $BASE/*/pool/v/vi/virtual*1.4.4*pypm | xargs basename
$ find $BASE/*/pool/v/vi/virtual*1.4.4*pypm -print0 | xargs -0 basename
Notez que l'exemple de la recherche peut utiliser -Print0 qui est pratique si vos chemins contiennent des espaces blancheurs (les solutions tr
mentionnées mentionnées ailleurs fonctionnent bien sur des espaces normaux, mais pas sur des fichiers contenant des nouvelles lignes).
Enfin, si vous avez accès à GNU Recherche, vous pouvez également utiliser -printf qui évite complètement l'appel de BasEname:
$ find $BASE/*/pool/v/vi/virtual*1.4.4*pypm -printf '%f\n'