J'aimerais une commande de recherche (ou similaire) qui, lorsqu'elle est dirigée vers un dossier, répertorie tous les fichiers présents dans ce dossier ou l'un de ses sous-dossiers, mais uniquement si le dossier contient un seul fichier. En d'autres termes, je souhaite répertorier le contenu des dossiers ne contenant qu'un fichier.
Donc, étant donné les fichiers suivants
/Foldera/folderb
/Foldera/folderb/test1.txt
/Foldera/folderb/test2.txt
/Foldera/folderc
/Foldera/folderd/test3.txt
/Foldera/folderc/foldere
il sortirait
/Foldera/folderd/test3.txt
Réponses:
Avec Bash 3:
Avec Bash 4:
En gros, parcourez tous les répertoires, puis vérifiez si ce répertoire contient exactement un enfant (fichier ou répertoire) et vérifiez si cet enfant n'est pas un répertoire. S'il y a exactement un enfant et que ce n'est pas un répertoire,
echo
il.Soyez averti: cela échoue si les répertoires ou les fichiers contiennent une nouvelle ligne dans leur nom.
Ce serait peut-être plus facile à faire si vous aviez des utilitaires GNU tels que
find
avec un-printf
option mais OS X ne l’a pas par défaut.la source
echo "$0"
àfind "$0"
.Je n'ai pas de Mac pour tester cela, mais j'ai trouvé beaucoup de réponses lorsque j'ai cherché dans votre question.
Cela affichera le nombre de fichiers dans chaque dossier, puis en utilisant grep ou un autre outil, vous pourrez le réduire.
Je voudrais vérifier la source ci-dessous, c'est pour Windows mais ils ont beaucoup de solutions Perl qui pourraient fonctionner aussi bien.
Question similaire: La source
la source
find
mais BSDfind
qui n'a pas de-printf
option. Voir: developer.apple.com/library/mac/documentation/Darwin/Reference/…