วิธีแสดงรายการไฟล์ทั้งหมดในแผนผัง (ไดเร็กทอรีและโฟลเดอร์ย่อย)?


41

สำหรับภารกิจของฉันฉันต้องการแสดงรายการไฟล์ทั้งหมดในแผนผัง

ฉันต้องการเห็นพวกเขาใน Nautilus หรือ Krusader แต่โซลูชันบรรทัดคำสั่งก็น่าสนใจเช่นกัน (ในกรณีนี้ฉันจะต้องใช้ชื่อเต็มขนาดและเวลาในการแก้ไข)


คำถามนี้มีมุมมองมากมายอันยิ่งใหญ่ บางทีคุณอาจยอมรับคำตอบที่คุณคิดว่ามีประโยชน์ที่สุดเพื่อช่วยคนอื่นให้รอดเวลา @Ivan?
starbeamrainbowlabs

คำตอบ:



27
ls -alR

นั่นอาจเป็นวิธีที่ง่ายที่สุด ฉันแค่แฮ็คสคริปต์หาเพื่อให้คุณควบคุมได้ง่ายขึ้น


7
หรือเพียงแค่ls -Rถ้าคุณไม่ต้องการรายละเอียดทั้งหมด
Matthew

11
find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n"

คุณสามารถเล่นกับการจัดรูปแบบ printf ได้มากเท่าที่คุณต้องการ นี่เป็นโอกาสที่ดีที่คุณจะได้รับสิ่งที่จัดรูปแบบตามที่คุณต้องการซึ่งเป็นสิ่งที่ประเมินค่าไม่ได้หากคุณใช้เอาต์พุตในแอปพลิเคชันอื่น

เพิ่มเติมได้ที่: http://linux.about.com/od/commands/l/blcmdl1_find.htm

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

find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n" | column -t

4

ดังที่ Oli ตอบแล้วfindจะช่วยให้คุณสามารถค้นหาแผนผังไดเรกทอรีทั้งหมดได้:

find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n"

# Where %TY will display the mod. time year as 4 digits
#       %Tm will display the mod. time month as 2 digits
#       %Td will display the mod. time day as 2 digits
#       %s displays the file size in bytes
#       %p displays the full path name of the file

คุณอาจต้องการใช้-type fตัวเลือกเพื่อ จำกัด ผลลัพธ์ให้เป็นเพียงไฟล์ ถ้าคุณต้องการจับคู่รูปแบบไฟล์คุณต้องการ-nameหรือ-inameตัวเลือก (ตรงตามตัวพิมพ์ใหญ่และตัวพิมพ์เล็กและตัวพิมพ์เล็กตามลำดับ) อ่านfindman page ของ man page - มีตัวเลือกมากมายที่คุณสามารถใช้เพื่อ จำกัด / ปรับปรุงการค้นหาของคุณ

และถ้าคุณคาดหวังว่าจะมีข้อมูลหลาย ๆ หน้าจอที่ถูกโยนกลับมาหาคุณอย่าลืมส่งผลให้lessคุณ

@Oli: +1 ผมเพิ่งได้เรียนรู้สิ่งใหม่ ๆ เช่นกัน column- ไม่เคยใช้มันมาก่อน


3

lsเป็นคำสั่งมาตรฐานในการแสดงรายการไฟล์ใน Ubuntu และระบบปฏิบัติการ Linux และ Unix อื่น ๆ lsมีประโยชน์อย่างยิ่งในการเรียนรู้เพราะคุณจะพบว่ามันติดตั้งในระบบ Unix ทุกระบบที่คุณเคยพบ โดยค่าเริ่มต้นการทำงานนี้จะแสดงเฉพาะไฟล์ในไดเรกทอรีปัจจุบัน

อย่างไรก็ตาม-R'แฟล็ก' เป็นตัวเลือกแบบเรียกซ้ำ (หมายเหตุตัวพิมพ์ใหญ่Rไม่ใช่ตัวอักษรr ) ซึ่งจะแสดงไดเรกทอรีย่อยทั้งหมดให้คุณเห็น

คุณถามถึง "รายละเอียด" ด้วย - สำหรับสิ่งนี้คุณต้องการ-lแฟล็ก (นั่นคือตัวพิมพ์เล็ก L ไม่ใช่อันดับหนึ่ง) โปรดระวังสิ่งนี้จะให้ข้อมูลสิทธิ์การใช้ไฟล์เช่นเดียวกับขนาดไฟล์ข้อมูลเวลา / วันที่และชื่อไฟล์

หากคุณต้องการแสดงไฟล์ / โฟลเดอร์ที่ซ่อนอยู่ (เทียบเท่ากับCtrl+ Hใน Nautilus) ให้เพิ่มการ-aตั้งค่าสถานะ 'all'

คุณสามารถรวมธงเข้าด้วยกันเพื่อให้สิ่งที่ชอบ:

ls -lR

หากคุณเรียกใช้สิ่งนี้ในโฟลเดอร์ที่มีขนาดพอเหมาะคุณจะพบว่าสิ่งนี้ให้ผลลัพธ์ที่มีความยาวมากซึ่งจะเลื่อนหน้าจอลงอย่างรวดเร็ว ในการหลีกเลี่ยงปัญหานี้คุณสามารถ 'ไปป์' เอาท์พุทของlsผ่านโปรแกรมที่เรียกว่าless(ชื่อคือล้อเลียนของสิ่งที่คล้ายกันmoreซึ่งอยู่ก่อน แต่มีคุณสมบัติเพิ่มเติม)

ls -lR | less

สิ่งนี้จะช่วยให้คุณใช้ปุ่มลูกศรขึ้น / ลงข้างๆ PageUp / Down เพื่อแสดงผลด้วยความเร็วที่สะดวกสบายยิ่งขึ้น


0

ใช้ Krusader:

  1. ใช้การค้นหา (Ctl-S)
  2. ทำเครื่องหมาย "ค้นหาในไดเรกทอรีย่อย"
  3. คลิก "ค้นหา"
  4. เมื่อการค้นหาเสร็จสิ้นคลิก "ฟีดไปยังกล่องรายการ"

สิ่งนี้จะช่วยให้คุณสามารถประมวลผลล็อตทั้งหมดโดยการลากไปยังพาเนลอื่น ฯลฯ


0

สคริปต์ Nautilusเป็นอย่างไร?

#!/bin/bash
#
# AUTHOR:       (c) 2013 Glutanimate (https://askubuntu.com/users/81372)
# NAME:         DirTree 0.1
# DEPENDENCIES: zenity tree  (install with sudo apt-get install zenity tree)
# LICENSE:      GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
#
# DESCRIPTION:  Creates a directory tree at the current location. If you want you
#               can filter the output by a pattern (e.g. *.avi to only include avi
#               files).

TITLE=DirTree

# Get working directory
WORKINGDIR="`python -c 'import gio,sys; print(gio.File(sys.argv[1]).get_path())' $NAUTILUS_SCRIPT_CURRENT_URI`"

# Time and date
TIME=$(date +"%Y-%m-%d_%H%M%S")

# Filter pattern
zenity --question --title "$TITLE" --text "Do you want to filter by a specific file pattern?"

if [ "$?" = "1" ]
  then
      customtree="tree"
  else
      PATTERN=$(zenity --entry --title "$TITLE" --text="Please enter a file pattern (e.g. *.avi)")

         if [ -z "$PATTERN" ]
           then
               exit
           else
               customtree="tree -P $PATTERN"               
         fi

fi

# Directory tree
$customtree "$WORKINGDIR" > "$WORKINGDIR/directorytree_$TIME.txt"

คำแนะนำในการติดตั้ง: ฉันจะติดตั้งสคริปต์ Nautilus ได้อย่างไร


0

ผมได้สร้างโปรแกรมพิเศษสำหรับการนี้ - สารบบ Snapshot
ซ้ำซ้ำผ่านไดเรกทอรีและจัดเก็บชื่อและขนาดของไฟล์และโฟลเดอร์ทั้งหมดที่พบในไฟล์ HTML ที่มีโครงสร้างที่เรียบร้อยซึ่งมีหน่วยงานคล้ายกับที่อยู่ในไดเรกทอรีป้อนข้อมูล
กล่าวอีกนัยหนึ่งนี่อาจเป็นคำสั่งdir /sหรือtree /fคำสั่งใน เวอร์ชันไฮเปอร์ลิงก์


คุณเขียนdirและtreeมีตัวเลือกสไตล์ DOS ดังนั้นฉันต้องถามมันจะใช้กับ Ubuntu ได้ไหม?
wjandrea

ใช่ฉันได้กำหนดให้ทำงานบนการติดตั้ง Ubuntu ทุกสุดสัปดาห์ แม้ว่ามันจะถูกสร้างขึ้นโดยใช้ C ++ และ Boost ดังนั้นมันจึงค่อนข้างยากที่จะรวบรวมและสร้างไบนารี นั่นคือเหตุผลที่ฉันกำลังอยู่ระหว่างการย้ายระบบไปยัง Python อย่างไรก็ตามฉันสามารถให้คุณไบนารี precompiled ถ้าคุณต้องการ
Anmol Singh Jaggi

0

หอยโข่ง

  1. เปิดใช้งานโฟลเดอร์ย่อยที่ขยายในมุมมองรายการ
  2. คลิกที่โฟลเดอร์แล้วกดเครื่องหมายดอกจัน ( *บน numpad หรือShift+ 8) เพื่อขยายไดเรกทอรีย่อยหนึ่งระดับ ทุกครั้งที่คุณกดดอกจันมันจะขยายไปอีกระดับ
    • ที่มา: htorque ของคำตอบที่นี่

สิ่งนี้ยังใช้งานได้ใน Nemo


-1

คุณสามารถใส่สิ่งเหล่านี้ลงในไฟล์. bashrc ของคุณ

function _get_tree(){ ls -alR | while read LINE; do   echo $LINE | grep ":$" > /dev/null;   if [ $? -eq 0 ];   then     VAR=$(echo $LINE | grep ":$"| sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/' | tee /dev/tty);   fi;   echo $LINE | grep "^-" > /dev/null;   if [ $? -eq 0 ];   then     size=${#VAR};     for i in $(eval echo "{1..$size}"); do echo -n ' '; done;     echo -n '..';     echo $LINE | cut -d ' ' -f9;   fi; done; };

alias get_tree='_get_tree'

ตอนนี้คุณสามารถใช้คำสั่ง get_tree ภายในไดเรกทอรีใดก็ได้และมันจะแสดงลำดับชั้นทั้งหมด

ไวยากรณ์:

$ get_tree

ตัวอย่างผลลัพธ์:

   .

    ..test.sh

   |-2

      ..123.log

   |---3

   |-----4

   |-5

   |---6

หวังว่านี่จะช่วยได้ !!


จะไม่ช่วยถ้าคุณไม่อธิบายสิ่งที่คุณกำลังทำ ..
Ron

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