3 votes

find : plusieurs "-exec" pour une liste de fichiers ne fonctionnent pas ?

J'essaie de résoudre ce problème sur un téléphone Android fonctionnant sous Oreo / 8.0, avec toybox 0.7.3-Android.

J'essaie d'obtenir une liste des fichiers contenus dans un dossier et leur date d'expiration respective. J'exécute cette commande :

find . -type f -exec stat -c %n {} \; -exec stat -c %Y {} \; -exec stat -c %y {} \;

ou

find . -type f -exec stat -c %n "{}" \; -exec stat -c %Y "{}" \; -exec stat -c %y "{}" \;

Dans les deux cas, je n'obtiens que le résultat de la première invocation de "stat". Est-ce que j'ai oublié quelque chose ou est-ce la façon dont toybox fonctionne sur Android ?

Le fichier de sortie devrait ressembler à ceci :

./file1.txt
1553516120
201903251315.20
./file2.txt
1549678694
201902090318.14
./file3.txt
1553541066
201903252011.06
./file4.txt
1553515882
201903251311.22
./file5.txt
1585138731
202003251318.51

EDIT : Il s'agit apparemment d'un bug dans toybox. Je l'ai signalé et le correctif est actuellement en attente d'être intégré au code source de toybox.

0voto

Irfan Latif Points 16863

Cela devrait fonctionner :

find . -type f | xargs -I {} stat --printf='%n \n %Y \n %y \n\n' '{}'

Mais les limites d'Android toybox stat ne prend pas en charge --printf le formatage. Donc, soit vous utilisez stat binaire avec toutes les options, par exemple à partir de Termux ou construit statiquement, ou vous devez faire une étape supplémentaire :

find . -type f | xargs -I {} stat -c '%n--%Y--%y--' '{}' | sed 's/--/\n /g'

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X