web-dev-qa-db-fra.com

comment lister les fichiers dans l'ordre

J'avais un fichier de 18 Go que je devais télécharger sur une connexion Internet moins bonne. Le torrent n'était pas une option. J'ai donc éclaté le fichier en 100 segments, et finalement, tout a été téléchargé. Maintenant, je dois remonter les fichiers, en utilisant un programme qui ressemble à cat.

J'ai donc besoin de lister les fichiers, dans l'ordre de comptage, et de les concaténer. Les noms de fichiers vont quelque chose comme SomeFile1.dcd, SomeFile2.dcd, SomeFile3.dcd SomeFile10.dcd, ... SomeFile100.dcd

pour que la concaténation fonctionne correctement, je dois lister les fichiers dans l'ordre numérique normal, sinon les cadres seront tous vissés.

comment lister les fichiers dans l'ordre numérique type 1,2,3,4 ....?

2
j0h

Utilisation de bash expansion d'accolade:

cat SomeFile{1..100}.dcd >final_file

Vous pouvez d'abord vérifier pour voir dans quels fichiers il est développé:

echo SomeFile{1..100}.dcd

Ici {1..100} sera étendu à 1,2,3....100.

Exemple:

$ echo SomeFile{1..5}.dcd
SomeFile1.dcd SomeFile2.dcd SomeFile3.dcd SomeFile4.dcd SomeFile5.dcd
6
heemayl

Perl peut également utiliser la syntaxe d'expansion dans les boucles:

Perl -e 'print "SomeFile$_.dcd " for 1..100' > foo.txt
2
Sylvain Pineau

en utilisant find et sort

find . -maxdepth 1 -type f -name "*.dcd" | sort -V
1
A.B.

Les modèles globaux se développeront jusqu'à la liste ordonnée des fichiers (et répertoires) correspondant au modèle globbing;

Si vous n'avez que ces fichiers dans votre répertoire de travail actuel, simplement:

cat * > out

Ou s'il n'y a pas d'autres fichiers/répertoires commençant par "SomeFile":

cat SomeFile* > out

Ou s'il n'y a pas d'autres fichiers/répertoires se terminant par ".dcd":

cat *.dcd > out

De plus, dans zsh, vous ne pouvez inclure que des fichiers normaux en utilisant le modèle de globalisation *(.):

cat *(.) > out
cat SomeFile*(.) > out
cat *(.).dcd > out
0
kos