ฉันมีคำสั่ง bash ต่อไปนี้:
find repo -name '*.c'
สิ่งที่ฉันต้องการจะทำคือใช้ไฟล์ที่ส่งคืนเป็นอาร์กิวเมนต์ของสคริปต์ Perl ของฉันเพื่อให้เทียบเท่ากับการทำงาน:
perl ./myscript file1.c file2.c file3.c ...
ฉันจะทำสิ่งนี้ได้อย่างไร
ฉันมีคำสั่ง bash ต่อไปนี้:
find repo -name '*.c'
สิ่งที่ฉันต้องการจะทำคือใช้ไฟล์ที่ส่งคืนเป็นอาร์กิวเมนต์ของสคริปต์ Perl ของฉันเพื่อให้เทียบเท่ากับการทำงาน:
perl ./myscript file1.c file2.c file3.c ...
ฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
ลอง
find repo -name '*.c' | xargs perl ./yourscript
สิ่งนี้ควรเป็นเช่นเดียวกัน
perl ./yourscript file1.c file2.c file3.c ...
คุณสามารถลอง:
find repository -name '*.c' -exec perl -pe 's:\n: :g' {} +
คั่นแทนคือ:
ที่นี่ไม่จำเป็นต้องใช้/
ทั้งในและPerl
sed
ถ้าคุณชอบของจริงpipe
:
find repository -name '*.c' | xargs cat | perl -pe 's:\n: :g'
input
สับสนarguments
(input
โดยทั่วไปเกี่ยวข้องกับstandard in
สตรีมของโปรแกรมซึ่งแตกต่างจากข้อโต้แย้ง) ฉันได้อัปเดตคำถามของคุณเพื่อสะท้อนสิ่งนี้ตามคำตอบที่คุณเลือกและความคิดเห็นของคุณเกี่ยวกับคำตอบ อย่าลังเลที่จะยกเลิกการเปลี่ยนแปลงหากไม่ถูกต้อง