คุณอาจต้องการเชื่อมโยงสายเพื่อค้นหา (หนึ่งครั้งเมื่อคุณเรียนรู้ว่าเป็นไปได้ซึ่งอาจเป็นวันนี้) แน่นอนว่าเป็นไปได้ตราบใดที่คุณยังอยู่ในการค้นหา เมื่อคุณไพพ์ไปที่ xargs มันอยู่นอกขอบเขต
ตัวอย่างเล็ก ๆ สองไฟล์ a.lst และ b.lst:
cat a.lst
fuddel.sh
fiddel.sh
cat b.lst
fuddel.sh
ไม่มีเคล็ดลับที่นี่ - ข้อเท็จจริงที่ว่าทั้งสองมี "fuddel" แต่มีเพียงหนึ่งเดียวเท่านั้นที่มี "fiddel"
สมมติว่าเราไม่รู้ เราค้นหาไฟล์ที่ตรงกับ 2 เงื่อนไข:
find -exec grep -q fuddel {} ";" -exec grep -q fiddel {} ";" -ls
192097 4 -rw-r--r-- 1 stefan stefan 20 Jun 27 17:05 ./a.lst
บางทีคุณอาจรู้จักไวยากรณ์สำหรับ grep หรือโปรแกรมอื่นเพื่อส่งสตริงทั้งสองเป็นเงื่อนไข แต่นั่นไม่ใช่ประเด็น ทุกโปรแกรมที่สามารถคืนค่าจริงหรือเท็จให้ไฟล์เป็นอาร์กิวเมนต์สามารถใช้ได้ที่นี่ - grep เป็นเพียงตัวอย่างที่นิยม
และหมายเหตุคุณสามารถติดตาม-execพร้อมคำสั่ง find อื่น ๆ เช่น-lsหรือ-deleteหรือสิ่งที่คล้ายกัน โปรดทราบว่าการลบไม่เพียง แต่ทำให้ rm (ลบไฟล์) แต่ยังลบ rmdir (ลบไดเรกทอรี) ด้วย
ห่วงโซ่ดังกล่าวจะถูกอ่านเป็นการรวมกันของคำสั่งและตราบใดที่ไม่ได้ระบุไว้เป็นอย่างอื่น (กล่าวคือมี-or
สวิตช์ (และ parens (ซึ่งจำเป็นต้องปิดบัง)))
ดังนั้นคุณจะไม่ออกจากห่วงโซ่การค้นหาซึ่งเป็นสิ่งที่มีประโยชน์ ฉันไม่เห็นข้อได้เปรียบใด ๆ ในการใช้ -xargs เนื่องจากคุณต้องระวังในการส่งไฟล์ซึ่งเป็นสิ่งที่ค้นหาไม่จำเป็นต้องทำมันจะจัดการการส่งผ่านแต่ละไฟล์โดยอัตโนมัติเป็นอาร์กิวเมนต์เดียวสำหรับคุณ
หากคุณเชื่อว่าคุณต้องการการหลอกลวงเพื่อค้นหา{} วงเล็บปีกกาอย่าลังเลที่จะเยี่ยมชมคำถามของฉันซึ่งขอหลักฐาน การยืนยันของฉันคือ: คุณทำไม่ได้
find
โพสต์นี้ได้เปิดตาของฉันไปเป็นวิธีใหม่ของการใช้ ขอบคุณมาก!