غير قادر على اتخاذ مجموعة من ملفات وهمية

StackOverflow https://stackoverflow.com/questions/635782

  •  10-07-2019
  •  | 
  •  

سؤال

ولست بحاجة لجعل ملفات استدعاؤها من 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"، ولكن تغيير أرقام منها (مجموعة الثانية) تسبب أجزاء من تسلسل يتم تخطي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top