Note : lister tous les répertoires dans un fichier, sous Windows

#16219

chcp 65001
cd c:\
dir /s | find /v "/" > %USERPROFILE%\Desktop\out.txt

Le fichier "out.txt" sur le bureau contiendra la liste, avec la taille, de tous les répertoires du disque C:.
(la première commande est pour passer la console en UTF8, et ne pas produire d’erreurs d’encodage dans le fichier de sortie sur les dossiers ont des noms non-ascii.)

Après l’encodage est celui de Windows, donc merdique, et il faut faire quelques replace() pour retrouver quelque chose de propre (par exemple remplacer l’espèce de ÿ par un espace dans les tailles en octets des dossiers).

Ensuite, sous Linux, j’utilise grep et les regex pour y chercher les dossiers les plus volumineux, par exemple ici ceux de plus d’un Go :

grep -En "[0-9]{1,3} ([0-9]{3} ){3}octets" out.txt

Qui donne quelque chose comme ça :


34716: Repertoire de C:\Users\E\AppData\Roaming\Apple Computer\MobileSync\Backup\2bbeabb51fff6d6c0ecbe08c389e1101717-20160708-001011		7204 fichier(s)    2 622 554 099 octets
35746: Repertoire de C:\Users\E\AppData\Roaming\Apple Computer\MobileSync\Backup\8b0814aebb2ce4791b78cde91bf33cb4231		6394 fichier(s)    3 514 059 440 octets
35748: Repertoire de C:\Users\E\AppData\Roaming\Apple Computer\MobileSync\Backup\Apps		58 fichier(s)    2 164 449 713 octets
41534: Repertoire de C:\Users\E\Documents\PRO64_Data		17 fichier(s)    2 775 411 462 octets
41554: Repertoire de C:\Users\E\Downloads		20 fichier(s)    2 293 264 330 octets
42342: Repertoire de C:\Users\E\Music\Nouveau dossier		204 fichier(s)    1 629 164 395 octets
42368: Repertoire de C:\Users\E\Videos		1 fichier(s)    1 997 012 992 octets
42374: Repertoire de C:\Users\Public\Documents		4 fichier(s)    2 198 038 538 octets
42544: Repertoire de C:\Users\Public\Music\Nouveau dossier - Copie		204 fichier(s)    1 629 164 395 octets
42548: Repertoire de C:\Users\Public\Pictures		2 fichier(s)    1 666 728 771 octets
49970: Repertoire de C:\Windows\Installer		537 fichier(s)    3 394 245 468 octets
52642: Repertoire de C:\Windows\SoftwareDistribution\DataStore		1 fichier(s)    1 199 636 480 octets
52696: Repertoire de C:\Windows\System32		2753 fichier(s)    1 530 923 297 octets
55168: Repertoire de C:\Windows\SysWOW64		2407 fichier(s)    1 103 340 866 octets
100373:           339631 fichier(s)   187 455 833 692 octets
100374:           149864 Rep(s)  42 483 564 544 octets libres

ÉDIT Roland me signale qu’ajouter « /-c » en paramètre du « div » retire les séparateurs de millier dans les tailles de fichiers.
Ceci simplifie un peu les grep :

dir /s /-c | find /v "/" > %USERPROFILE%\Desktop\out.txt

Puis, pour les fichiers >1 Go (oui, c’est bien « 10 », car un milliard c’est 10^9, mais ça contient 10 chiffres :p) :

grep -En "[0-9]{10,}octets" out.txt

https://lehollandaisvolant.net/?mode=links&id=20170216215053

initialsession: remove curl and wget aliases by bagder · Pull Request #1901 · PowerShell/PowerShell · GitHub

#16034

Microsoft avait implémenté cUrl et Wget dans Power-Shell. Sauf que, comme on pouvait s’y attendre de Microsoft, cette implémentation est incomplète et différente de l’originale.

Du coup, ceux qui avaient installé le vrai cUrl et/ou le vrai Wget sous Windows sont maintenant emmerdés : les alias des commandes de Microsoft prennent le dessus, avec donc un comportement différent (cUrl et Wget existent depuis bien avant Power-Shell, y compris sous Windows).

Ici, l’auteur même de cUrl demande le retrait des alias de cUrl/Wget de Power-Shell.

Je pense que Power-Shell, qui intègre tout un tas d’autres alias du genre (ps, ls, grep, sed, ou je ne sais quoi) risque d’avoir à changer beaucoup d’autres choses, surtout s’ils continuent leur portage sous GNU/Linux et Mac de Power-Shell. Soit ils devront intégrer les vraies versions de ces commandes (ce qui posera sûrement un problème de licence) soit ils leur faudra changer les noms des commandes (ce qui enlèvera un peu tout intérêt à leur shell, censé être interopérable).

https://github.com/PowerShell/PowerShell/pull/1901

ImageMagick “color to alpha” (like The GIMP) - xuv's bookmarks

#14531

À l'inverse, pour virer l'alpha, en PHP : http://lehollandaisvolant.net/tuto/php/#supprimer-le-canal-alpha-GD

C'est le bordel mais ça marche. C'est utile quand on veut faire des miniatures d'images sans vouloir des images toutes noires ou toutes blanches, ou même magenta comme il arrive parfois.

En tout cas, la CLI c'est pratique pour le traitement en masse de fichiers.

Note : nombre de lignes de code dans un projet

#14406

Avec git d’installé, on liste les fichiers et ensuite on compte le nombre de lignes dans chaque fichier :

git ls-files | xargs cat | wc -l

Voir aussi ça, pour un listage fichier par fichier, avec un total à la fin :

git ls-files | xargs wc -l

Et ça, pour un zoli graphique avec les additions et le suppressions depuis le début (le hash est celui d’un repos vide) :

git diff --stat 4b825dc642cb6eb9a060e54bf8d69288fbee4904

Ou encore ça, pour les stats de Github, mais comptant les octets (par langage de prog) plutôt que le nombre de lignes de code :

curl https://api.github.com/repos/USERNAME/REPOS/languages

ÉDIT : Yunga me signale aussi "cloc" et "sloccount" :
https://github.com/AlDanial/cloc
http://manpages.ubuntu.com/manpages/wily/en/man1/cloc.1.html

http://www.dwheeler.com/sloccount/
http://manpages.ubuntu.com/manpages/wily/en/man1/sloccount.1.html