Triez les fichiers par ordre alphabétique avant le traitement

J’utilise la commande

find . -type f -exec sha256sum {} \; > sha256SumOutput 

pour hacher chaque fichier dans une hiérarchie de dossiers. Malheureusement, sha256sum n’obtient pas les noms de fichiers find en ordre alphabétique. Comment cela peut-il être corrigé?

J’aimerais qu’ils soient commandés avant qu’ils soient hachés afin qu’ils soient hachés par ordre alphabétique (cela a une raison).

Utiliser des pipes et sort

 find . -type f -print0 | sort -z | xargs -r0 sha256sum > sha256SumOutput 

Explication

De l’ man find

  -print0 True; print the full file name on the standard output, followed by a null character (instead of the newline character that -print uses). This allows file names that contain newlines or other types of white space to be correctly interpreted by programs that process the find output. This option corresponds to the -0 option of xargs. 

De man sort

  -z, --zero-terminated line delimiter is NUL, not newline 

De l’ man xargs

  -0 Input items are terminated by a null character instead of by whitespace, and the quotes and backslash are not special (every character is taken literally). Disables the end of file ssortingng, which is treated like any other argument. Useful when input items might contain white space, quote marks, or backslashes. The GNU find -print0 option produces input suitable for this mode. 

Exemple

 % ls -laog total 4288 drwxrwxr-x 2 4329472 Aug 17 08:20 . drwx------ 57 20480 Aug 17 08:20 .. -rw-rw-r-- 1 0 Aug 17 08:15 a -rw-rw-r-- 1 0 Aug 17 08:15 ab -rw-rw-r-- 1 0 Aug 17 08:15 b -rw-rw-r-- 1 0 Aug 17 08:15 c % find -type f -print0 | sort -z | xargs -r0 sha256sum e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ./a e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ./ab e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ./b e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ./c 

Les valeurs de la première colonne sont les mêmes, car les fichiers n’ont aucun contenu dans mon test.

Vous devriez pouvoir simplement diriger votre sortie de find to sort .