2017-05-12 2 views
0

J'utilise find et ls pour lister les fichiers mp3 contenus dans les sous-dossiers. Dans chaque sous-dossier, je veux afficher la liste des fichiers qu'il contient dans un fichier local (stocké dans ce sous-dossier).Comment puis-je lister les fichiers dans les sous-dossiers et afficher cette liste dans un fichier local?

J'ai essayé cette commande:

find . -type f -name \*.mp3 -execdir basename {} >> playlist.m3u \; 

mais le fichier playlist.m3u il écrit dans est stocké dans le répertoire racine . et non le sous-répertoire du fichier mp3 trouvé.

Existe-t-il un moyen d'écrire dans un fichier stocké dans le sous-répertoire?

Répondre

0

Essayez la commande suivante, cela vous aidera à:

find -type d -exec bash -c 'cd $1; find -maxdepth 1 -not -name "." -name \*.mp3 -printf "%f," | awk "{print substr(\$0,0,length(\$0)-1)}" > playlist.m3u' bash "{}" \; 

Cela liste séparée des fichiers par des virgules, s'il vous plaît changer cela en conséquence.

+0

Merci! J'ai adapté votre commande à: 'trouver -type d -exec bash -c 'cd" $ 1 "; find -maxdepth 1 -nom \ *. mp3 -printf "% f \ n"> playlist.m3u 'bash "{}" \; ' – lamayo