# Spliter multifichiers



## symbol (3 Mai 2020)

Bonjour,

L'année dernière me semble t-il j'avais posté une requête concernant le split d'un fichier volumineux en petit morceaux.

Cette fois c'est quasi identique, mais il faut conserver le nom du fichier.

Le code que l'on avait donné, était :
`cd /Volumes/WD4To_B/test
for file in *.txt
do
splitname=$(basename $file | sed "s/\.[^.]*/_/")
split -b 50000k "$file" "$splitname"
done`

Dans mon cas, il y a plusieurs fichiers a spliter "MYR (1), MYR (2), MYR (3)" (le nom peut varier). 
Du coup le script, lorsqu'il écrit les morceaux, retire une partie du nom du fichier, et ca pose un problème.
En comptant les morceaux, ca fait que 561 megas (11 X 51) , alors que l'intégralité des 3 fichiers font 188+546+190 = 924 Megas

Serait-il possible de modifier la chose pour que le nom du fichier soit intégralement conservé ?

merci


----------



## Membre supprimé 1129907 (3 Mai 2020)

Teste cette version (double quote en plus lors du basename)

```
cd /Volumes/WD4To_B/test
for file in *.txt
do
splitname=$(basename "$file" | sed "s/\.[^.]*/_/")
split -b 50000k "$file" "$splitname"
done
```


----------



## symbol (3 Mai 2020)

Merci Ecatomb,

Ca fonctionne bien mieux
Y'a juste le .txt qui est parti, eventuellement le remettre serait pas mal.


```
MYR (3).txt
MYR (1)_aa
MYR (1)_ab
MYR (1)_ac
MYR (1)_ad
MYR (1)_ae
MYR (1)_af
MYR (1)_ag
MYR (1).txt
MYR (2)_aa
MYR (2)_ab
MYR (2)_ac
MYR (2)_ad
MYR (2)_ae
MYR (2)_af
MYR (2)_ag
MYR (2)_ah
MYR (2)_ai
MYR (2)_aj
MYR (2)_ak
MYR (2)_al
MYR (2)_am
MYR (2)_an
MYR (2)_ao
MYR (2)_ap
MYR (2)_aq
MYR (2)_ar
MYR (2).txt
MYR (3)_aa
MYR (3)_ab
MYR (3)_ac
MYR (3)_ad
MYR (3)_ae
MYR (3)_af
MYR (3)_ag
```


----------



## Membre supprimé 1129907 (3 Mai 2020)

Dans ce cas, autant ne pas s'embêter:

```
cd /Volumes/WD4To_B/test
for file in *.txt
do
split -b 50000k "$file" "${file}_"
done
```

Cela te donnera quelque chose comme ça pour chacun de tes fichiers txt

```
MYR (1).txt
MYR (1).txt_aa
MYR (1).txt_ab
MYR (1).txt_ac
```


----------



## symbol (3 Mai 2020)

il est est necessaire que le .txt soir a la fin
Sinon je renommerais les fichiers avec l'utilitaire "A Better Finder Rename 11"


----------



## Membre supprimé 1129907 (3 Mai 2020)

Il y a sans doute mieux tellement j'ai l'impression de faire du bricolage   


```
cd /Volumes/WD4To_B/test
for file in *.txt
do
  splitname=$(basename "$file" | sed "s/\.[^.]*/_/")
  split -b 50000k "$file" "$splitname"

  for splitfile in "${splitname}"*
  do
    mv "${splitfile}" "${splitfile}.txt"
  done
done
```

Mais cela semble bien marcher 

```
104985202  3 mai 15:25 MYR (1).txt
 51200000  3 mai 15:34 MYR (1)_aa.txt
 51200000  3 mai 15:34 MYR (1)_ab.txt
  2585202  3 mai 15:34 MYR (1)_ac.txt
209970404  3 mai 15:34 MYR (2).txt
 51200000  3 mai 15:34 MYR (2)_aa.txt
 51200000  3 mai 15:34 MYR (2)_ab.txt
 51200000  3 mai 15:34 MYR (2)_ac.txt
 51200000  3 mai 15:34 MYR (2)_ad.txt
  5170404  3 mai 15:34 MYR (2)_ae.txt
```

Par contre, si tu le relances ensuite cela va prendre l'ensemble des fichiers comme des fichiers à traiter...


----------



## symbol (3 Mai 2020)

Je suis bien content du résultat 
18 gigas traités en quelques minutes.... rapide le truc

Je vais tester la version #2 du script.

Merci Ecatomb.


----------



## symbol (3 Mai 2020)

La version 2 fonctionne très bien.


----------



## symbol (15 Mai 2020)

Svp message a effacer .


----------

