จะกำจัดข้อผิดพลาดเมื่อรันคำสั่ง find ใน Linux ได้อย่างไร


3

ฉันใช้คำสั่งต่อไปนี้เพื่อแสดงรายการไฟล์ขนาดใหญ่ 20 ไฟล์ในไดเรกทอรี แต่พร้อมกับรายชื่อไฟล์ก็ยังแสดงให้เห็นถึงข้อผิดพลาดเช่นอนุญาตปฏิเสธ ฉันลองเพิ่ม2> /dev/nullแต่ดูเหมือนจะไม่ชอบ

นี่คือคำสั่งที่ฉันใช้

find . -type f -printf "%s %p\n" | sort -nr | head -n 20

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

คำตอบ:


3

ใน bash 2> /dev/nullจะใช้งานได้จริงตราบใดที่คุณเพิ่มไว้เป็นส่วนหนึ่งของคำสั่ง find เองเช่นก่อนที่ไพพ์

เช่นนี้จะทำงาน:

find -type f -printf "%s %p\n" 2> /dev/null | sort -nr | head -n 20

ด้วย tcsh ไม่มีวิธีที่ตรงไปตรงมาในการทำเช่นเดียวกัน แต่คน tcshระบุวิธีแก้ปัญหา:

เชลล์ไม่สามารถเปลี่ยนทิศทางเอาต์พุตการวินิจฉัยในปัจจุบันโดยไม่เปลี่ยนเส้นทางเอาต์พุตมาตรฐาน แต่ ' (คำสั่ง> ไฟล์เอาต์พุต)> & ไฟล์ข้อผิดพลาด ' มักจะเป็นวิธีแก้ปัญหาที่ยอมรับได้ ทั้งการส่งออกไฟล์หรือข้อผิดพลาดไฟล์อาจจะ '/ dev / TTY' เพื่อส่งออกไปยังสถานี

สำหรับคำสั่ง find ธรรมดานี่ให้:

(find > /dev/tty) >& /dev/null

เมื่อใช้ไพพ์ในทางตรงกันข้ามกับทุบตีคุณต้องวาง> /dev/ttyหลังจากไพพ์สุดท้ายเพื่อหลีกเลี่ยงการเปลี่ยนทิศทางเอาท์พุตที่กำกวม ข้อความผิดพลาด.

สิ่งนี้จะทำงานใน tcsh:

(find -type f -printf "%s %p\n" | sort -nr | head -n 20 > /dev/tty) >& /dev/null

ด้วยข้อเสนอแนะของคุณฉันได้รับข้อผิดพลาดดังต่อไปนี้ - การเปลี่ยนเส้นทางเอาต์พุตที่ไม่ชัดเจน
user196833

ฉันลองค้นหาดู -type f -printf "% s% p \ n" 2> / dev / null | เรียงลำดับ -nr | ส่วนหัว -n 20 แต่เกิดข้อผิดพลาด - การเปลี่ยนเส้นทางเอาต์พุตที่ไม่ชัดเจน
user196833

1
ฉันคิดว่าเป็นเพราะฉันใช้ tcsh และไม่ทุบตี
user196833

ฉันได้ติดตั้ง tcsh และฉันพบวิธี
เดนนิส

ดังนั้นการส่งออกไปยังไฟล์:(find -type f -printf "%s %p\n" | sort -nr | head -n 20 > file.txt) >& /dev/null
Umber Ferrule
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.