trouver des dossiers dans un répertoire sans lister le répertoire parent

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:

  • La partie find ~/test -type d trouve tous les répertoires récursivement sous ~/test , comme vous le savez déjà.
  • Le nom de -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 

$BASE est le nom d’utilisateur initial.