غير قادر على اتخاذ مجموعة من ملفات وهمية
سؤال
ولست بحاجة لجعل ملفات استدعاؤها من FILE1، FILE2، ... لFile99.
وحاولت دون جدوى التالية
cat test > {File1 .. File99}
والأمر دون كلمة ملف لم تنجح.
المحلول
واحد فقط الأوامر:
touch File{1..99}
نصائح أخرى
$ for i in {1..100}; do touch "File$i"; done
وهذا سيعتمد على قذيفة الذي تستخدمه. أفترض أنك تستخدم باش.
ووفقا ل http://www.gnu.org /software/bash/manual/bashref.html#Brace-Expansion ، سوف باش توسيع أرقام وأحرف واحدة. لذلك ينبغي أن يكون التعبير هدفين الخاص بك:
File{1..99}
ولكن لا أعتقد أن المشغل إعادة توجيه ">" يمكن إخراج لملفات متعددة. قد تحتاج إلى استخدام حلقة:
for output in File{1..99}
do
cat test > $output
done
وأو كما أونيلينير:
for output in File{1..99}; do cat test > $output; done
إذا كنت تفضل إصدار غير حلقات ثم يمكنك استخدام نقطة الإنطلاق
cat test | tee File{1..99} > /dev/null
مع zsh م> (مع ه <م> mult_ios م>) يمكنك:)
% zsh -c 'print test > file{1..3}'
% head file*
==> file1 <==
test
==> file2 <==
test
==> file3 <==
test
إذا كنت تريد الملفات لفرز بشكل صحيح (file01، file02 ... file10، الخ)، والقيام بذلك:
for i in {0..10}; do i="0"$i; touch file${i: -2}; done
والذي هو نفسه على النحو التالي:
for i in {0..10}
do
i="0"$i
touch file${i: -2} # or cat file > file${i: -2}
done
ويجب أن يكون هناك تكون مسافة بين القولون واندفاع في بند التوسع فرعية. يمكنك البدء في نطاقات فوق مع 1 إذا كنت تريد أن تبدأ مع "file01".
وأو وسيلة أكثر اقتضابا الكثير لديك الأصفار البادئة:
touch file{0..9}{0..9}
وواستخدام تقنية phyrex1an مع هذا واحد:
cat test | tee File{0..9}{0..9} > /dev/null
وهذا لا تجعل ملف إضافي واحد "file00". يمكنك أيضا القيام "{2..3} {0..9}" ل "file20" من خلال "file39"، ولكن تغيير أرقام منها (مجموعة الثانية) تسبب أجزاء من تسلسل يتم تخطي.