Score:2

ฉันจะสร้างรายการโฟลเดอร์ย่อยในโฟลเดอร์ที่กำหนดโดยไม่มีพาธแบบเต็มได้อย่างไร

ธง gb

ต่อไปนี้ในสคริปต์ทุบตี:

ค้นหา /Volumes/SpeedyG -type d >> file.txt

...ทำงานได้ดีเพื่อแสดงรายการโฟลเดอร์ในพาธนั้นในไฟล์ข้อความ

/ปริมาณ/SpeedyG/folder1  
/ปริมาณ/SpeedyG/folder2  
/ปริมาณ/SpeedyG/folder2

แต่ผลลัพธ์คือเส้นทางแบบเต็มไปยังโฟลเดอร์

ถ้าฉันต้องการแค่ชื่อโฟลเดอร์โดยไม่มีพาธแบบเต็มล่ะ


โฟลเดอร์1  
โฟลเดอร์2  
โฟลเดอร์3  
Score:6
ธง hr

สำหรับการใช้งาน GNU ของ หาคุณสามารถทำได้โดยใช้การดำเนินการเอาต์พุตที่จัดรูปแบบ พิมพ์ฉ:

          ชื่อไฟล์ %P ที่มีชื่อจุดเริ่มต้นอยู่ใต้
                 ซึ่งพบว่าถูกลบออกไป

ดังนั้น

ค้นหา /Volumes/SpeedyG -type d -printf '%P\n' >> file.txt

ถ้าคุณต้องการเอาออก ทั้งหมด คอมโพเนนต์ไดเร็กทอรีชั้นนำ คุณสามารถใช้ %ฉ แทน %P. ถ้าคุณมี zshคุณสามารถทำได้เช่นเดียวกันโดยใช้ recursive shell globbing และ the :t (หาง) รอบคัดเลือก:

พิมพ์ -rC1 /Volumes/SpeedyG/**/*(ND/:t)

ซึ่งในกรณีนี้คุณไม่จำเป็นต้องใช้ หา เลย ด้วย POSIX ใดๆ คุณสามารถทำได้เสมอ

ค้นหา dir -type d -exec sh -c '
  สำหรับ f do printf "%s\n" "${f##*/}"; เสร็จแล้ว
' ค้นหา-sh {} +
gb flag
ฉันต้องมีปัญหาเกี่ยวกับไวยากรณ์ ถ้าฉันเรียกใช้สิ่งนี้จากเทอร์มินัล mac ฉันจะได้รับ `find: -printf: ไม่รู้จักหลักหรือตัวดำเนินการ` บางทีมันอาจแตกต่างใน OSX มากกว่าที่เป็นใน Ubuntu
ojdo avatar
co flag
@JonGriffith: ใช่นี่น่าจะเป็นกรณี: https://superuser.com/a/293200/238733และนี่คือคำตอบที่ทันสมัยกว่า (2020 แทนที่จะเป็น 2011): https://stackoverflow.com /a/61158594/2375855
cn flag
@JonGriffith หากคุณกำลังมองหาคำตอบสำหรับ OSX มากกว่า Ubuntu [Unix SE](https://unix.stackexchange.com/) เป็นที่ที่ดีกว่ามากสำหรับการถาม [Superuser SE](https://superuser.com/) ก็ใช้ได้เช่นกัน
Score:0
ธง cn

ต้นไม้ -di /Volumes/SpeedyG จะให้รายชื่อโฟลเดอร์ย่อยเท่านั้น

tree -dia /Volumes/SpeedyG จะให้รายการของโฟลเดอร์ย่อยเท่านั้นที่จะรวมไดเร็กทอรีที่ซ่อนอยู่

ต้นไม้ -diL 1 /Volumes/SpeedyG จะให้รายชื่อโฟลเดอร์ย่อยเพียง 1 ระดับเท่านั้น

หมายเหตุ: หากไดเร็กทอรีเป็นลิงก์สัญลักษณ์ไปยังไดเร็กทอรีอื่น บรรทัดเอาต์พุตนั้นจะแสดงลิงก์และพาธไปยังไดเร็กทอรีเป้าหมาย...
คุณสามารถกำจัดมันได้ด้วยคำสั่ง grep เช่น ต้นไม้ -di /Volumes/SpeedyG | grep -v "\->"

gb flag
ฉันต้องการผลลัพธ์ที่ตัดเส้นทางผู้นำ ดังนั้นฉันจึงได้รับทุกอย่างทางด้านขวาของ SpeedyG/
WU-TANG avatar
cn flag
@JonGriffith เพื่อให้ชัดเจน สิ่งที่คุณพูดคือถ้าคุณทำ `tree -di /Volumes/SpeedyG > sampletext.txt`... และคุณดูที่ sampletext.txt สิ่งเดียวที่ไม่ต้องการในไฟล์คือ บรรทัดแรกสุดในนั้น...
gb flag
ไม่ แต่ละบรรทัดในไฟล์ txt หมายถึงพาธแบบเต็มของไฟล์ที่เพิ่มไปยัง txt เช่น /Volumes/SpeedyG/folder1 ฉันต้องการให้รายการผลลัพธ์ถูกตัดออกเพื่อแสดงเฉพาะรายการของโฟลเดอร์ทั้งหมดที่พบในระดับนี้ ดังนั้นรายการจะเป็น "folder1, folder2, folder3" เป็นต้น
WU-TANG avatar
cn flag
@JonGriffith ...ฉันไม่มีผลลัพธ์แบบเดียวกับที่คุณเห็น..ทั้งหมดที่ฉันเห็นคือชื่อไดเร็กทอรีย่อยหนึ่งชื่อต่อหนึ่งบรรทัด... ตามความเป็นจริง ถ้าฉันต้องการดูพาธแบบเต็ม ฉันจะต้องทำ `tree -fdi /Volumes/SpeedyG` แทน... แต่ตอนนี้ที่คุณพูดถึง " ในระดับนี้" ฉันจะแก้ไขสำหรับคนอื่นๆ ที่อาจพบว่ามีประโยชน์ ไม่รู้จะพูดอะไรว่าทำไมคุณถึงเห็นสิ่งที่คุณเห็น
Score:0
ธง mx

กนู ชื่อฐาน ลบคอมโพเนนต์ไดเร็กทอรีชั้นนำออกจากชื่อพาธแบบเต็ม

$ ชื่อฐาน /Volumes/SpeedyG/folder1
โฟลเดอร์1

ในการประมวลผลหลายชื่อพาธ ให้ใช้ --หลายรายการ ตัวเลือก:

â-aâ
â--หลายรายการâ
     สนับสนุนมากกว่าหนึ่งข้อโต้แย้ง ถือว่าทุกข้อโต้แย้งเป็น NAME
     ด้วยวิธีนี้ ต้องระบุ SUFFIX เสริมโดยใช้เครื่องหมาย â-sâ
     ตัวเลือก.

$ ชื่อฐาน -a /Volumes/SpeedyG/folder1 /Volumes/SpeedyG/folder2 /Volumes/SpeedyG/folder3
โฟลเดอร์1
โฟลเดอร์2
โฟลเดอร์3

ในสคริปต์ วิธีที่มีประสิทธิภาพมากกว่าในการถอดส่วนนำหน้าที่ใหญ่ที่สุดออกคือการใช้การขยายพารามิเตอร์ดังนี้:

file="/Volumes/SpeedyG/folder1"
ไฟล์="${ไฟล์##/*/}"

คุณสามารถใช้สิ่งนี้ใน สำหรับ วนซ้ำ:

สำหรับ i ใน /Volumes/SpeedyG/*
ทำ
    พิมพ์f "%s\n" "${i##/*/}"
เสร็จแล้ว > $HOME/files.txt

$cat ~/files.txt
โฟลเดอร์1
โฟลเดอร์2
โฟลเดอร์3

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา