Impossible de créer une gamme de fichiers factices
Question
Je dois créer des fichiers appelés à partir de Fichier1, Fichier2, ... dans Fichier99.
J'ai essayé ce qui suit sans succès
cat test > {File1 .. File99}
La commande sans le mot Fichier n'a pas fonctionné.
La solution
Une seule commande:
touch File{1..99}
Autres conseils
$ for i in {1..100}; do touch "File$i"; done
Cela dépendra du shell que vous utilisez. Je suppose que vous utilisez Bash.
Selon http://www.gnu.org /software/bash/manual/bashref.html#Brace-Expansion , Bash développera les chiffres et les caractères uniques. Donc, votre expression d'accolade devrait être:
File{1..99}
Mais je ne pense pas que l'opérateur de redirection " > " peut générer plusieurs fichiers. Vous devrez peut-être utiliser une boucle:
for output in File{1..99}
do
cat test > $output
done
Ou en une ligne:
for output in File{1..99}; do cat test > $output; done
Si vous préférez une version sans boucle, vous pouvez utiliser tee
cat test | tee File{1..99} > /dev/null
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 souhaitez que les fichiers soient correctement triés (fichier01, fichier02 ... fichier10, etc.), procédez comme suit:
for i in {0..10}; do i="0"$i; touch file${i: -2}; done
Qui est identique à:
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 espace entre les deux points et le tiret dans la clause d’extension de la sous-chaîne. Vous pouvez commencer les plages ci-dessus par 1 si vous souhaitez commencer par "file01".
Ou bien, une façon beaucoup plus succincte d'avoir des zéros non significatifs:
touch file{0..9}{0..9}
et d'utiliser la technique de phyrex1an avec celle-ci:
cat test | tee File{0..9}{0..9} > /dev/null
Ceci crée un fichier supplémentaire "file00". Vous pouvez également faire & {{2..3} {0..9} " pour " fichier20 " via "file39", mais le fait de changer le chiffre des unités (la deuxième plage) ferait sauter certaines parties de la séquence.