ฉันมีคำสั่ง 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' {} +
คั่นแทนคือ:ที่นี่ไม่จำเป็นต้องใช้/ทั้งในและPerlsed
ถ้าคุณชอบของจริงpipe:
find repository -name '*.c' | xargs cat | perl -pe 's:\n: :g'
inputสับสนarguments(inputโดยทั่วไปเกี่ยวข้องกับstandard inสตรีมของโปรแกรมซึ่งแตกต่างจากข้อโต้แย้ง) ฉันได้อัปเดตคำถามของคุณเพื่อสะท้อนสิ่งนี้ตามคำตอบที่คุณเลือกและความคิดเห็นของคุณเกี่ยวกับคำตอบ อย่าลังเลที่จะยกเลิกการเปลี่ยนแปลงหากไม่ถูกต้อง