Spliter multifichiers

symbol

Membre actif
13 Octobre 2004
536
25
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

11111.png
 
Teste cette version (double quote en plus lors du basename)
Bloc de code:
cd /Volumes/WD4To_B/test
for file in *.txt
do
splitname=$(basename "$file" | sed "s/\.[^.]*/_/")
split -b 50000k "$file" "$splitname"
done
 
Merci Ecatomb,

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

Bloc de code:
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
 
Dans ce cas, autant ne pas s'embêter:
Bloc de code:
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
Bloc de code:
MYR (1).txt
MYR (1).txt_aa
MYR (1).txt_ab
MYR (1).txt_ac
 
il est est necessaire que le .txt soir a la fin
Sinon je renommerais les fichiers avec l'utilitaire "A Better Finder Rename 11"
 
Dernière édition:
Il y a sans doute mieux tellement j'ai l'impression de faire du bricolage :siffle:

Bloc de code:
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 :)
Bloc de code:
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...
 
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.
 

Sujets similaires

Réponses
10
Affichages
666