แทนที่ข้อความ 'no file or directory' จาก 'find'


15

ฉันพยายามค้นหาไดเรกทอรีด้วยคำสั่งนี้:

find /users/dan/ -name 'Prams' -type d

ฉันเห็นผลลัพธ์จำนวนมากของ 'ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว' มีวิธีใดที่จะปิดการค้นหาหากไม่พบสิ่งใดเลย?


สิ่งนี้ใช้ได้กับฉัน: find / users / dan / -name 'Prams' -type d | tee log
nulltorpedo

1
ไปป์ที่ไม่มีเครื่องหมายและจะส่งออกเฉพาะเอาต์พุต std เท่านั้น หากเป็น | & log มันจะพิมพ์ข้อผิดพลาดเหล่านั้นเช่นกัน
nulltorpedo

คำตอบ:


20

ลองสิ่งนี้:

find /users/dan/ -name 'Prams' -type d 2>/dev/null

มันบอกว่า: find: พา ธ ต้องนำหน้านิพจน์ ฉันใช้ linux 2.6.9-67.0.7
nulltorpedo

รสไหน: คุณสามารถวิ่งได้uname -a
Book Of Zeus

Linux machine-3 2.6.9-67.0.7.ELsmp # 1 SMP พุธ 27 ก.พ. 04:47:23 EST 2008 x86_64 x86_64 x86_64 GNU / Linux
nulltorpedo

สิ่งนี้ใช้ได้กับฉัน: find / users / dan / -name 'Prams' -type d | tee log
nulltorpedo

น่าสนใจนี่ไม่ได้ผลสำหรับฉัน
Book Of Zeus

2

คุณสามารถระงับเอาต์พุต STDERR:

find /users/dan/ -name 'Prams' -type d 2> /dev/null

หรือคุณสามารถใช้findเพื่อแสดงไดเรกทอรีทั้งหมดและกรองผลลัพธ์ด้วยgrep:

find /users/dan -type d | grep "Prams"

findคำสั่งจะไม่พิมพ์ "ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว" ถ้าเส้นทางการค้นหา ( /users/danในกรณีนี้) มีอยู่แม้ว่าจะไม่มีการแข่งขัน คุณแน่ใจหรือว่าไดเรกทอรีนี้มีอยู่?


0

ไวยากรณ์ของเขาถูกต้องหาก/users/dan/ <มีอยู่จริงในสถานที่แรก!

ไม่ควรมีเอาต์พุต 'ไม่มีไฟล์หรือไดเรกทอรีดังกล่าวในตอนแรก

find $HOME -name 'Prams' -type d
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.