Exécuter un listing récursif de tous les fichiers dans/var/log et rediriger la sortie standard vers un fichier appelé lsout.txt dans votre répertoire personnel. Complétez cette question SANS quitter votre répertoire personnel.bash: liste récursive de tous les problèmes de fichiers
An: ls -R/var/log /> /home/bqiu/lsout.txt
Je compte la commande bash ci-dessus ne sont pas correctes. Parce que j'ai trouvé ce qu'il était magasins:
$ ls -R /var/log
/var/log:
empty.txt setup.log setup.log.full tmp
/var/log/tmp:
fake.txt subfolder
/var/log/tmp/subfolder:
Est-ce que ce problème résolu signifie?
Je ne sais pas.
Parce qu'il contient plus de « choses » que « seuls les fichiers »
Ou du moins, si le but était de trouver tous les « fichiers » sous le «/var/log » répertoire récursive, j'espère obtenir l'anwser comme ceci:
/var/log/empty.txt
/var/log/setup.log
/var/log/setup.log.full
/var/log/tmp/fake.txt
Alors quelqu'un peut analyser le contenu de la sortie pour une utilisation ultérieure. Un tel comme
$ perl -wnle 'print "$. :" , $_;' logfiles
1 :/var/log/empty.txt
2 :/var/log/setup.log
3 :/var/log/setup.log.full
4 :/var/log/tmp/fake.txt
C'est ce que j'ai jusqu'à présent:
$ ls -1R
.:
cal.sh
cokemachine.sh
dir
sort
test.sh
./dir:
afile.txt
file
subdir
./dir/subdir:
$ ls -R | sed s/^.*://g
cal.sh
cokemachine.sh
dir
sort
test.sh
afile.txt
file
subdir
Mais cela laisse encore tous les noms répertoire/sous-répertoire (dir et subdir), plus deux nouvelles lignes vides
Comment puis-je obtenir le bon résultat sans utiliser Perl ou awk? De préférence en utilisant uniquement les commandes bash de base (uniquement parce que Perl et awk sont hors de portée de l'évaluation)
Modifié: Je me suis concentré sur mon propre dossier "$ HOME" juste pour restreindre le fichier listé. J'ai peu de contenu dans mon homedir
Edité le 2: Désolé pour ma question inappropiée dans le formulaire initial. J'ai corrigé le libellé et j'espère que tout le monde pourra voir le problème maintenant.
La question n'est pas claire - qu'est-ce qui est * correct? Est-ce que chaque ligne de la sortie finale devrait être de la forme './Dir/afile.txt'? Noms de base uniquement? –
Avez-vous essayé la commande 'find'? –
La principale erreur de la réponse fournie est que le fichier de sortie doit être '$ HOME/lsout.txt'; La plupart des gens ne sont pas dans/home/bqiu. La principale erreur avec ce que vous faites semble être que vous ignorez la demande de liste du contenu de/var/log. –