[SH] traiter un nom de fichier qui contient un espace

traiter un nom de fichier qui contient un espace [SH] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 15-10-2006 à 11:09:15    

Bonjour,
 
voici un bout de shell script:

for i in `find`
do
  tar -u fichier.tar $i
done


Mon problème est que certains fichiers trouvés par mon find contiennent des espaces, et sont donc scindés par le for ...
 
J'ai alors tenté un truc du genre :

for i in `find | tr "\ " "\\\ "`
do
  tar -u fichier.tar $i
done


Ou encore :

find | awk '{tar -u fichier.tar $0}'


Pas de solution trouvée pour le moment ...  :cry:  
Si une bonne âme pouvait me guider ....  :jap:  
 
MERCI bien d'avance
- mv1 -

Reply

Marsh Posté le 15-10-2006 à 11:09:15   

Reply

Marsh Posté le 15-10-2006 à 11:30:51    

find . -exec tar uf test.tar {} \;


 
non ?


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 15-10-2006 à 12:15:49    

Malheureusement, le nombre de fichiers est très important (milliers de fichiers trouvés), et le tar n'est pas capable d'accepter autant d'arguments en une seule fois.
 
C'est pour ça que je cherche un moyen de "tarer" fichier par fichier.

Reply

Marsh Posté le 15-10-2006 à 13:00:54    

mv1 a écrit :

Malheureusement, le nombre de fichiers est très important (milliers de fichiers trouvés), et le tar n'est pas capable d'accepter autant d'arguments en une seule fois.
 
C'est pour ça que je cherche un moyen de "tarer" fichier par fichier.


 
ce que je fais dans ce cas la je crée un fichier dans lequel je met le résultat de la recherche, et ensuite tu lis ce fichier ligne par ligne avec tar dans ton script.

Reply

Marsh Posté le 15-10-2006 à 13:04:38    

Perso j'avait fait un petit script qui enlève les espaces des répertoires et fichiers.
C'est un peu bourrin, mais bon...

Reply

Marsh Posté le 15-10-2006 à 16:57:33    

enfoiro a écrit :

ce que je fais dans ce cas la je crée un fichier dans lequel je met le résultat de la recherche, et ensuite tu lis ce fichier ligne par ligne avec tar dans ton script.


 
Tu lirais ton fichier avec un awk, un grep ou autre chose ?
 
Merci !!

Reply

Marsh Posté le 15-10-2006 à 17:25:20    


 
Malheureusement, "chez moi" si le find me trouve un fichier qui s'appelle par exemple "mon fichier.xxx", mon $i vaut "mon" puis "fichier.xxx" au tour de boucle suivant, donc un coup la commande est `tar -u fichier.tar "mon"` puis `tar -u fichier.tar "fichier.xxx"` ...

Reply

Marsh Posté le 15-10-2006 à 17:30:11    

jackseg1980 a écrit :

Perso j'avait fait un petit script qui enlève les espaces des répertoires et fichiers.
C'est un peu bourrin, mais bon...


 
C'est une bonne idée, mais je dois absoluement conserver les noms de chaque fichier comme à l'origine.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed