Bagaimana cara mendaftar semua file di pohon (direktori dan subdiranya)?

41

Untuk tugas saya, saya perlu membuat daftar semua file dalam pohon (direktori, semua subdir, semua subdir dari itu, dll.).

Saya lebih suka melihatnya di Nautilus atau Krusader, tetapi solusi command-line juga menarik (dalam hal ini saya akan memerlukan file nama lengkap, ukuran dan waktu modifikasi untuk dicantumkan).

Ivan
sumber
Pertanyaan ini memiliki banyak sekali pandangan. Mungkin Anda bisa menerima jawaban yang menurut Anda paling bermanfaat, untuk menghemat waktu orang lain di @van?
starbeamrainbowlabs

Jawaban:

39

pohon akan sangat nyaman bagi Anda.

sudo apt-get install tree

gunakan tree filepathuntuk membuat daftar file.

kit.yang
sumber
27
ls -alR

Itu mungkin metode paling sederhana. Saya hanya meretas skrip temukan untuk memberi Anda kontrol lebih banyak sentuhan.

Oli
sumber
7
Atau hanya ls -Rjika Anda tidak menginginkan semua detailnya.
Matius
11
find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n"

Anda dapat bermain dengan format printf sebanyak yang Anda suka. Ini memberi Anda peluang besar untuk mendapatkan hal-hal yang diformat dengan cara yang Anda butuhkan, yang sangat berharga jika Anda menggunakan output di aplikasi lain.

Lebih lanjut: http://linux.about.com/od/commands/l/blcmdl1_find.htm

Untuk keterbacaan yang lebih baik, Anda dapat menyalurkan semuanya melalui columnperintah dan itu akan secara otomatis mengubah ukuran hal-hal sehingga mereka berbaris.

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

Saat Oli menjawab, findakan memungkinkan Anda untuk mencari seluruh pohon direktori:

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

Anda mungkin juga ingin menggunakan -type fopsi untuk membatasi hasil hanya file. Jika Anda ingin mencocokkan pola file, Anda ingin opsi -nameatau -iname(masing-masing sensitif huruf, dan tidak sensitif huruf). Bacalah findhalaman manual membaca - ada sejumlah besar opsi yang dapat Anda gunakan untuk mempersempit / mempersempit pencarian Anda.

Dan selain itu, jika Anda mengharapkan untuk memiliki beberapa layar penuh data akan dilemparkan kembali kepada Anda, ingat untuk menyalurkan hasil Anda less.

@Oli: +1 Saya baru belajar sesuatu yang baru juga - column. Belum pernah menggunakannya sebelumnya.

Akan
sumber
3

lsadalah perintah standar untuk membuat daftar file di Ubuntu dan sistem operasi Linux dan Unix lainnya. lssangat berguna untuk dipelajari karena Anda akan menemukannya terinstal di setiap sistem Unix yang pernah Anda temui. Secara default menjalankan ini hanya menampilkan file dalam direktori saat ini.

Namun -R'flag' adalah opsi rekursif (perhatikan huruf kapital R , bukan r ) yang akan menunjukkan kepada Anda semua sub-direktori juga.

Anda juga meminta "detail" - untuk ini Anda ingin -lbendera (itu huruf L kecil, bukan yang nomor satu). Sadarilah ini memberi Anda informasi izin file serta ukuran file, info waktu / tanggal dan nama file.

Jika Anda ingin juga menampilkan file / folder tersembunyi (sama dengan Ctrl+ Hdi Nautilus), tambahkan -abendera 'semua'.

Anda dapat menggabungkan bendera bersama, untuk memberi Anda sesuatu seperti:

ls -lR

Jika Anda menjalankan ini pada folder berukuran layak apa pun, Anda akan menemukan ini menghasilkan output panjang besar yang menggulung layar Anda sangat cepat. Untuk menyiasatinya, Anda dapat 'menyalurkan' output lsmelalui program yang disebut less(namanya adalah parodi yang serupa moreyang ada lebih dulu tetapi memiliki lebih banyak fitur).

ls -lR | less

Ini akan memungkinkan Anda untuk menggunakan tombol panah atas / bawah, di samping PageUp / Down untuk melihat output pada kecepatan yang lebih nyaman.

8128
sumber
0

Menggunakan Krusader:

  1. Gunakan Pencarian (Ctl-S).
  2. Centang "cari di subdirektori".
  3. Klik "Cari".
  4. Ketika pencarian selesai, klik "Feed to listbox".

Ini akan memungkinkan Anda untuk memproses keseluruhan dengan menyeret ke panel lain, dll.

Frank Z.
sumber
0

Bagaimana dengan skrip 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"

Petunjuk instalasi: Bagaimana saya bisa menginstal skrip Nautilus?

Glutanimate
sumber
0

Saya telah membuat program khusus untuk ini - Snapshot Direktori .
Itu secara berulang berulang melalui direktori dan menyimpan nama dan ukuran semua file dan folder yang ditemui dalam file HTML terstruktur rapi, yang memiliki organisasi yang mirip dengan direktori input.
Dengan kata lain, ini dapat dianggap sebagai versi hyperlink dari dir /satau tree /fperintah.

Anmol Singh Jaggi
sumber
Anda menulis dirdan treedengan opsi gaya DOS, jadi saya harus bertanya, apakah ini akan berfungsi di Ubuntu?
wjandrea
Ya, saya sebenarnya telah menjadwalkannya untuk berjalan pada instalasi Ubuntu saya setiap akhir pekan. Meskipun, ini dibangun menggunakan C ++ dan Boost, jadi akan sedikit sulit untuk mengkompilasi dan membuat biner. Itu sebabnya saya sedang dalam proses porting ke Python. Ngomong-ngomong, saya bisa memberi Anda binary yang telah dikompilasi jika Anda mau.
Anmol Singh Jaggi
0

Nautilus

  1. Aktifkan subfolder yang diperluas dalam tampilan daftar
    • Untuk 14,04 dan 16,04, lihat di sini
    • Untuk 17.10 dan 18.04, lihat di sini
  2. Klik pada folder dan tekan asterisk ( *pada numpad, atau Shift+ 8) untuk memperluas satu tingkat subdirektori. Setiap kali Anda menekan tanda bintang, itu akan memperluas level berikutnya.

Ini juga berfungsi di Nemo.

wjandrea
sumber
-1

Anda bisa meletakkan ini di file .bashrc Anda

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'

Sekarang, Anda dapat menggunakan perintah get_tree di dalam direktori apa pun dan itu akan menampilkan seluruh hierarki.

Sintaksis:

$ get_tree

Output sampel:

   .

    ..test.sh

   |-2

      ..123.log

   |---3

   |-----4

   |-5

   |---6

Semoga ini membantu !!

Nitish Srivastava
sumber
Tidak akan membantu kecuali jika Anda menjelaskan apa yang Anda lakukan ..
Ron
-1 Pemformatan kode yang buruk, tidak cukup penjelasan. Dan mengapa Anda membuat alias?
wjandrea