J'utilise la commande find dans un script ksh, et j'essaie de récupérer uniquement les noms de fichiers, plutôt que le chemin complet. Comme dans, je veux qu'il renvoie text.exe, pas //severname/dir1/dir2/text.exe.
Comment pourrais-je obtenir cela? Pour clarifier, je connais le répertoire dans lequel se trouvent les fichiers, je saisis simplement ceux créés avant une date de ceetain, donc le chemin d'accès n'a pas d'importance.
vous pouvez le faire avec:
find ..... |sed 's#.*/##'
mais est-ce vraiment logique? s'il y a deux fichiers avec le même nom mais situés dans des répertoires différents, comment les distinguer?
par exemple.
you are in /foo
/foo/a.txt
/foo/bar/a.txt
MODIFIER
modifiez la réponse pour obtenir une meilleure mise en forme du texte.
Comme vous l'avez décrit dans le commentaire, vous voulez donc
Cela pourrait être fait en un seul coup:
find ...|xargs tar -czf /path/to/your/target/a.gz
cela va trouver des fichiers, faites un tar (a.gz) dans votre répertoire cible.
Si vous utilisez GNU find, alors
find path -printf "%f\n"
affichera simplement le nom du fichier et exclura le chemin.
find ... -exec basename {} \;
fera aussi l'affaire ... mais comme @Kent le demande, pourquoi voulez-vous cela?
Voici une autre réponse.
find | awk -F/ '{print $NF}'
GNU find le supporte nativement en utilisant -printf
donc tout ce que vous devez faire est
find ... -printf '%f\n'