พบไฟล์ที่เปิดด้วยคำสั่ง 'find'


12

นี่อาจเป็นเรื่องง่าย แต่ฉันไม่สามารถเข้าใจได้และมันก็ไม่สามารถค้นหาได้ ในลำดับชั้นของโฟลเดอร์ฉันมีไฟล์ประเภท xyz หนึ่งไฟล์ ฉันต้องการค้นหาไฟล์นั้นและเปิดด้วยคำสั่งเทอร์มินัล

find . -name *.xyz

นี่จะส่งคืนไฟล์ที่ฉันกำลังค้นหา ตอนนี้ฉันจะเปิดโดยอัตโนมัติโดยไม่ต้องพิมพ์ชื่อได้อย่างไร

find . -name *xyz | open

มันใช้งานไม่ได้ มันบอกว่าไม่พบคำสั่งเปิด


3
มันเป็นไฟล์ประเภทไหน? หากไม่ใช่ไฟล์ที่ปฏิบัติการได้คุณต้องการเปิดไฟล์อะไร โอ้ Windows ทำอะไรกับประชากรของเรา = /
chown

นี่น่าจะเป็นของ superuser ...
retracile

1
ฉันใช้ Mac ไม่ใช่ Windows ... และฉันต้องการเปิดไฟล์ด้วยโปรแกรมเริ่มต้น

2
หา -name * xyz | xargs เปิดและค้นหา -name * .xyz -exec open {} \; ทั้งสองทำงาน ขอบคุณ

ฉันดีใจที่คุณพบวิธีแก้ปัญหา อย่าลืมทำเครื่องหมายวิธีที่ทำงานได้ดีที่สุดสำหรับคุณ คนอื่นจะเห็นอัตราส่วน 'การยอมรับ' ของคุณและจะไปได้ไกลเมื่อถามคำถามในอนาคต ผู้ใช้ที่มีอัตราส่วนการยอมรับต่ำกว่ามักพบว่าคำถามของพวกเขาถูกเพิกเฉย =)
matchew

คำตอบ:


10

@retracile ถูกต้อง คุณต้องเปิดด้วย 'บางสิ่ง' อย่างไรก็ตามฉันชอบที่จะใช้ exec มากกว่า xargs

find . -name '*.xyz' -exec cat {} \;

สิ่งนี้จะส่งคืนcat fileFound.xyz; cat fileFound2.xyx;ฯลฯ อย่างไรก็ตามคุณคาดหวังว่าจะพบไฟล์เดียว

โปรดทราบว่าการเปลี่ยน\;เป็น+จะกลับcat fileFound.xyz fileFound2.xyzขึ้นอยู่กับกรณีภายหลังอาจเป็นตัวเลือกที่ต้องการ

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ฉันจะพาคุณไปที่คำถามนี้


6

คำสั่งที่คุณกำลังค้นหาเรียกว่า xdg-open

ลองใช้คำสั่งของคุณด้วย:

xdg-open "$(find . -name '*xyz' | head -n1)"

6

คุณจำเป็นต้องรู้ว่าคุณต้องการใช้โปรแกรมใดในการเปิดไฟล์ ถ้าเป็นรูปภาพคุณสามารถใช้เกวนวิวหรืออะไรก็ได้

การป้อนข้อมูลและเปลี่ยนเป็นอาร์กิวเมนต์ทำด้วย xargs และคุณจะต้องหลบหนีสัญลักษณ์ตัวแทนนั้น ...

find . -name \*xyz | xargs gwenview

และเพื่อจัดการช่องว่างในชื่อไฟล์ ....

find . -name \*xyz | xargs -d"\n" gwenview

2

ตามที่คนอื่น ๆ ได้ชี้ให้เห็นคำถามของคุณยังไม่เจาะจงพอที่จะตอบอย่างชัดเจน ดังนั้นคาดเดาความหมายที่เป็นไปได้อื่น: ถ้าคุณหมายความว่าคุณต้องการรันมันเป็นปฏิบัติการ (หมายความว่าโปรแกรมของคุณเป็นปฏิบัติการ) บอกเชลล์ว่าคุณต้องการแทนที่เอาต์พุตของคำสั่ง find เป็นส่วนหนึ่งของบรรทัดคำสั่ง :

$(find . -name *.xyz)

0

หากคุณต้องการเปิดไฟล์ทั้งหมดที่พบfindในแท็บแยกในอินสแตนซ์เดียวของ vim คุณสามารถทำได้:

find . -name \*xyz | xargs vim -p
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.