จากความเข้าใจของฉันต่อไปนี้ควรมีความหมายเหมือนกันทุกประการ:
ls -1 | xargs file {}
ls -1 | xargs -I{} file {}
หากไม่ได้ระบุตัวเลือก -I ไว้ค่าเริ่มต้นคือ -I {}
ฉันต้องการแสดงรายการไฟล์ทั้งหมดในไดเรกทอรีปัจจุบันและเรียกใช้fileคำสั่งในแต่ละไฟล์ บางแห่งมีช่องว่างในชื่อ อย่างไรก็ตามฉันสังเกตเห็นความแตกต่าง ดูด้านล่าง:
$ ls -1
Hello World
$ ls -1 | xargs file {}
{}: ERROR: cannot open `{}' (No such file or directory)
Hello: ERROR: cannot open `Hello' (No such file or directory)
World: ERROR: cannot open `World' (No such file or directory)
$ ls -1 | xargs -I{} file {}
Hello World: directory
ด้วย -I {} ที่ระบุไว้อย่างชัดเจนช่องว่างในชื่อไฟล์จะถือว่าเป็นไปตามที่คาดไว้
xargs file ไม่ควรจะเป็นxargs -I{} file {} xargs file {}ผมคิดว่าเมื่อระบุอย่างชัดเจน -I {} file "Hello World"ทุบตีจะรักษามันเป็น โดยไม่ต้อง -I {} file Hello Worldก็จะถือว่าเป็น
-1ตัวเลือกเป็นไปlsตามค่าเริ่มต้นเมื่อเอาต์พุตของlsไฟล์หรือไพพ์ดังนั้นคุณไม่จำเป็นต้องใช้ที่นี่ (3) คุณกำลังสับสน-Iกับตัวเลือกที่คัดค้าน-i(ตัวพิมพ์เล็กI) -ifooเทียบเท่ากับ-Ifooแต่ธรรมดาเทียบเท่ากับ-i แต่การใช้งาน-I{} -I{}(4) ถ้าคุณต้องการทำสิ่งที่คุณพูดว่าต้องการทำจริงๆทำไมไม่เพียงแค่พูดfile *?
fileกับมัน lsแต่ฉันมากับตัวอย่างที่ง่ายโดยใช้ คุณพูดถูก สำหรับสิ่งfile *ที่ดีที่สุด
-execมี