ฉันจะรับพา ธ สัมบูรณ์จากการใช้คำสั่ง find unix ได้อย่างไร


11

วิธีรับพา ธ สัมบูรณ์โดยใช้คำสั่ง find
จริง ๆ แล้วฉันกำลังเรียกใช้สคริปต์ต่อไปนี้: -

find . -size +20M | while read a
do
     i=$(echo $a | sed 's:/: :g')
     echo $a;
     j=($i)
     fileName=${j[${#j[@]}-1]}
     userName=${j[${#j[@]}-3]}
done

แต่ตัวแปรที่นี่$aเส้นทางเริ่มต้นจากการแสดงแต่ฉันต้องการเส้นทางที่แน่นอนจาก./Downloads/filename/

คำตอบ:


16

ใช้การค้นหาด้วยพา ธ สัมบูรณ์

find /path/ -size +20M

มันจะพิมพ์เส้นทางทั้งหมด
หากคุณไม่ทราบไดเรกทอรีการทำงานให้ใช้การทดแทนคำสั่งpwdเช่นนี้

find "`pwd`" -size +20M 
   #or like this:
find "$(pwd)" -size +20M

เพื่อให้ได้ไดเรกทอรีทำงานของคุณ

อย่างไรก็ตามดูเหมือนว่าตอนนี้ Bash man จะแนะนำให้ใช้$()มากกว่า``ดังนั้นคุณควรใช้แบบฟอร์มที่สอง คุณยังสามารถอ้างถึง$PWDตัวแปรที่มีไดเรกทอรีการทำงานของสคริปต์โดยตรงและอาจจะเร็วขึ้นหากคุณต้องใช้ในการวนซ้ำ

find "$PWD" -size +20M

แต่ฉันไม่ได้มีเส้นทางฉันมี เป็นไดเรกทอรีปัจจุบันแล้ว
Shivam Sharma

2
อย่าเริ่มต้นด้วย.ใช้$(pwd)แทนนั่นจะให้เส้นทางที่สมบูรณ์แก่คุณ
bsd

8

คุณสามารถใช้pwdคำสั่งหรือพิมพ์ไฟล์realpath:

$ find "$(pwd)" -size +20M
$ find . -size +20M -exec realpath {} +

ทั้งสองคำสั่งจริงให้เส้นทางที่แน่นอนไปยังไฟล์


แต่คนที่สองกำลังค้นหา: `realpath ': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
Shivam Sharma

ครวญเพลง บางทีคุณอาจไม่ได้ติดตั้งแม้ว่าจะมีให้ในcoreutilsแพ็คเกจ which realpathพยายามที่จะค้นหามันด้วย
Spack

ไม่พบสิ่งใดเลย ..
Shivam Sharma

คุณใช้ระบบไหน
Spack

Linux BANE 3.7-trunk-amd64 # 1 SMP Debian 3.7.2-0 + kali8 x86_64 GNU / Linux
Shivam Sharma

0

ในการแสดงรายการไฟล์ PNG และ JPEG ทั้งหมดที่มีอายุ 7 วันพร้อมเส้นทางที่แน่นอน

$ find $PWD/ -mtime -7 -print -exec grep -e ".png\|.jpg" {} \;

ที่นี่$PWDจะถูกเพิ่มในทุกไฟล์ที่ตรงกัน

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