traiter un nom de fichier qui contient un espace [SH] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 15-10-2006 à 11:30:51
find . -exec tar uf test.tar {} \; |
non ?
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.
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. |
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.
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...
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 !!
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"` ...
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 une bonne idée, mais je dois absoluement conserver les noms de chaque fichier comme à l'origine.
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 ...
Si une bonne âme pouvait me guider ....
MERCI bien d'avance
- mv1 -