ฉันต้องการค้นหาคำสั่ง bash ที่จะให้ฉัน grep ทุกไฟล์ในไดเรกทอรีและเขียนผลลัพธ์ของ grep นั้นไปยังไฟล์แยกต่างหาก ฉันเดาว่าจะต้องทำอะไรแบบนี้
ls -1 | xargs -I{} "grep ABC '{}' > '{}'.out"
แต่เท่าที่ฉันรู้ xargs ไม่ชอบอัญประกาศ อย่างไรก็ตามหากฉันลบเครื่องหมายคำพูดคู่ออกคำสั่งจะเปลี่ยนทิศทางเอาต์พุตของคำสั่งทั้งหมดไปยังไฟล์เดียวที่เรียกว่า '{}' ออกแทนที่จะเป็นชุดไฟล์แต่ละไฟล์
ไม่มีใครรู้วิธีการทำเช่นนี้โดยใช้ xargs? ฉันเพิ่งใช้สถานการณ์ grep นี้เป็นตัวอย่างเพื่อแสดงปัญหาของฉันกับ xargs ดังนั้นการแก้ปัญหาใด ๆ ที่ไม่ได้ใช้ xargs นั้นไม่เหมาะสมสำหรับฉัน
xargs
โดยไม่ต้อง-0
: นี้ใช้เฉพาะเมื่อคุณท่อfind
ของการส่งออกด้วยxargs
ใช่มั้ย? เมื่อฉันxargs -a <input_file>
จะใช้ฉันจะทำอย่างไร คำสั่งส่วนใหญ่เช่นgrep
เอาท์พุทด้วย\n
และไม่ใช่\0.
วิธีเดียวที่ฉันสามารถนึกถึงtr
การแก้ไขสิ่งนี้คือการใช้อีกครั้งเพื่อแก้ไขปัญหาที่อาจเกิดขึ้น แต่ทำไมมันถึงสำคัญที่จะใช้กับเท่านั้น-0
?