Avoir du mal à répertorier le contenu d’un dossier dans lequel je ne suis pas, tout en excluant le nom du dossier lui-même.
ex:
root@vps [~]# find ~/test -type d /root/test /root/test/test1
Cependant, je veux qu’il affiche / teste uniquement 1, par exemple.
Pensées?
Vous pouvez le faire avec -exec
et basename
:
find ~/test -type d -exec basename {} \;
Explication:
find ~/test -type d
trouve tous les répertoires récursivement sous ~/test
, comme vous le savez déjà. -exec basename {} \;
part exécute la commande basename
sur {}
, où tous les résultats de la dernière étape sont remplacés. Il n’y a rien de mal avec un simple
find ~/test -mindepth 1
De même, cela aura le même effet:
find ~/test/*
comme il correspond à tout ce qui est contenu dans ~/test/
mais pas ~/test
lui-même.
En passant, vous trouverez certainement que find
se plaindra de l’option -mindepth n
après tout autre commutateur, car l’ordre est normalement important mais les commutateurs de -(min|max)depth n
affectent le comportement global.
Ensuite, vous avez besoin de -type f
au lieu de -type d
.
Ou, si vous souhaitez afficher la liste des dossiers, à l’exception du parent -mindepth 1
( find ~/test -type d -mindepth 1
).
Et maintenant que vous l’avez édité, je pense que ce que vous voulez peut être
find ~/test -type d -mindepth 1 |cut -d/ -f3-
Mais je pense que vous devez être plus précis 😉
Je viens de le réparer avec sed
find $BASE -type d \( ! -iname "." \)|sed s/$BASE//g
Où $BASE
est le nom d’utilisateur initial.