Je souhaite recevoir la sortie suivante.
Supposons que la structure de répertoires du système de fichiers soit la suivante:
-dir1 -dir2 -file1 -file2 -dir3 -file3 -file4 -dir4 -file5 -dir5 -dir6 -dir7
La sortie du script doit être comme:
Répertoires:
/dir1 /dir1/dir2 /dir1/dir2/dir3 /dir1/dir2/dir4 /dir1/dir5 /dir1/dir5/dir6 /dir1/dir5/dir7
Des dossiers:
/dir1 /dir1/dir2/file1 /dir1/dir2/file2 /dir1/dir2/dir3/file3 /dir1/dir2/dir3/file4 /dir1/dir2/dir4/file5 /dir1/dir5/dir6 /dir1/dir5/dir7
Pourriez-vous me dire comment conserver la sortie de find . -type d
et find . -type f
dans un autre fichier?
Sous Windows, pour répertorier uniquement les répertoires:
dir /ad /b /s
pour lister tous les fichiers (et aucun répertoire):
dir /a-d /b /s
rediriger la sortie vers un fichier:
dir /a-d /b /s > filename.txt
dans Shell:
find . -type d
donne les répertoires du répertoire de travail actuel et:
find . -type f
donne les fichiers du répertoire de travail actuel.
Remplacer .
par votre répertoire d'intérêt.
Répertoires:
find ./ -type d
Des dossiers:
find ./ -type f
Répertoires:
find ./ -type d > somefile.txt
Des dossiers:
find ./ -type f > somefile.txt
Sous Windows, vous pouvez le faire comme ceci en tant que solution la plus flexible qui vous permet en outre de traiter les noms de répertoire.
Vous utilisez FOR/R pour exécuter récursivement des commandes batch.
Consultez ce fichier de commandes.
@echo off
SETLOCAL EnableDelayedExpansion
SET N=0
for /R %%i in (.) do (
SET DIR=%%i
::put anything here, for instance the following code add dir numbers.
SET /A N=!N!+1
echo !N! !DIR!
)
Similaire pour les fichiers, vous pouvez ajouter un motif sous forme d'un ensemble au lieu d'un point, dans votre cas
(*.*)
C'est une vieille question, mais je pensais ajouter quelque chose de toute façon.
DIR ne traverse pas correctement toutes les arborescences de répertoires que vous souhaitez, en particulier celles de C :. Il abandonne simplement par endroits en raison de protections différentes.
ATTRIB fonctionne beaucoup mieux, car il en trouve plus. (Pourquoi cette différence? Pourquoi MS ferait fonctionner un utilitaire dans un sens et un autre dans ce domaine? Damné si je sais.) D'après mon expérience, le moyen le plus efficace de gérer cela, bien que ce soit un peu compliqué, est d'obtenir deux listes:
attrib/s/d C: \>% TEMP%\C-avec-répertoires.txt
attrib/s C: \>% TEMP%\C-sans-répertoires.txt
et faire la différence entre eux. Cette différence, ce sont les répertoires sur C: (sauf ceux qui sont trop bien cachés). Pour C :, je le fais généralement en tant qu'administrateur.
Sous Windows:
dir/ad/b/s
dir/a-d/b/s
Sous Linux, un simple
find . -printf '%y %p\n'
vous donnera une liste de tous les éléments contenus, avec des répertoires et des fichiers mélangés. Vous pouvez enregistrer cette sortie dans un fichier temporaire, puis extraire toutes les lignes commençant par "d"; ce seront les répertoires. Les lignes qui commencent par un "f" sont des fichiers.