Je dois faire des fichiers appelés File1, File2, ... à File99.Impossible de créer une plage de fichiers fictifs
J'ai essayé, sans succès, les éléments suivants
cat test > {File1 .. File99}
La commande sans le mot fichier ne fonctionne pas.
Je dois faire des fichiers appelés File1, File2, ... à File99.Impossible de créer une plage de fichiers fictifs
J'ai essayé, sans succès, les éléments suivants
cat test > {File1 .. File99}
La commande sans le mot fichier ne fonctionne pas.
Juste une commande:
touch File{1..99}
Cela dépend du shell que vous utilisez. Je suppose que vous utilisez Bash.
Selon http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion, Bash va développer les chiffres et les caractères uniques. Ainsi, l'expression de votre corset doit être:
File{1..99}
Mais je ne pense pas que l'opérateur de redirection « > » peut produire à plusieurs fichiers. Vous pourriez avoir besoin d'utiliser une boucle:
for output in File{1..99}
do
cat test > $output
done
Ou comme une doublure:
for output in File{1..99}; do cat test > $output; done
J'ai essayé votre commande en tant que doublure sans succès: $ pour la sortie dans le fichier {1..99}; faire; test de chat> sortie $; done –
Je pense que vous avez un point-virgule supplémentaire. Les travaux suivants pour moi: pour la sortie dans le fichier {1..99}; faire un test de chat> $ output; done –
Cela fonctionne avec $ pour la sortie dans le fichier {1..99}; faire un test de chat> $ output; done –
$ for i in {1..100}; do touch "File$i"; done
Si vous préférez une version non mise en boucle vous pouvez utiliser tee
cat test | tee File{1..99} > /dev/null
Votre code fonctionne également sans/dev/null. Pourquoi l'utilisez-vous? –
@Masi: Principalement pour être équivalent avec les autres réponses. Une autre raison possible, bien que n'étant pas la mienne, est d'éviter une longue sortie qui n'est pas nécessaire. – phyrex1an
'tee' copiait sinon la sortie vers le terminal ainsi que les fichiers. –
Avec zsh (avec son mult_ios) vous pouvez :)
% zsh -c 'print test > file{1..3}'
% head file*
==> file1 <==
test
==> file2 <==
test
==> file3 <==
test
Si vous voulez que les fichiers de trier correctement (file01, file02 ... file10, etc.), faites ceci:
for i in {0..10}; do i="0"$i; touch file${i: -2}; done
qui est le même que:
for i in {0..10}
do
i="0"$i
touch file${i: -2} # or cat file > file${i: -2}
done
Il doit y avoir un pari spatial Ajoutez le deux-points et le tiret dans la clause d'extension de la sous-chaîne. Vous pouvez démarrer les plages ci-dessus avec 1 si vous voulez commencer par "file01".
Ou, une manière beaucoup plus succincte d'avoir des zéros en tête:
touch file{0..9}{0..9}
et à utiliser la technique de phyrex1an avec celui-ci:
cat test | tee File{0..9}{0..9} > /dev/null
Cela ne fait un fichier supplémentaire "de file00". Vous pouvez également faire "{2..3} {0..9}" pour "file20" à "file39", mais en changeant le chiffre des uns (la deuxième plage), certaines parties de la séquence seraient ignorées.
Concis. Je suppose que vous avez voulu le contenu du fichier "test" dans les nouveaux fichiers. –
Vous pouvez utiliser {01..99} pour avoir File01, File02, etc. –