it-swarm-tr.com

Bir ağaçtaki tüm dosyalar (dizin ve alt dizinleri) nasıl listelenir?

Bir görevim için bir ağaçtaki tüm dosyaları listelemem gerekir (bir dizin, tüm alt dizinleri, bunların tüm alt dizinleri, vb.).

Onları Nautilus veya Krusader'de görmeyi tercih ederim, ancak bir komut satırı çözümü de ilginç (bu durumda dosyaların tam adlarına, boyutlarına ve değişiklik zamanlarının listelenmesi gerekecek).

41
Ivan

ağaç sizin için çok uygun olacaktır.

Sudo apt-get install tree

dosyaları listelemek için tree filepath.

39
kit.yang
ls -alR

Muhtemelen en basit yöntem budur. Size bir dokunuşla daha fazla kontrol sağlamak için bir bulma komut dosyası kullanıyorum.

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

Printf formatıyla istediğiniz kadar oynayabilirsiniz. Bu, işleri başka bir uygulamada kullanıyorsanız, ihtiyacınız olan şekilde biçimlendirilmiş hale getirmeniz için harika bir fırsat sağlar.

Daha fazla: http://linux.about.com/od/commands/l/blcmdl1_find.htm

Daha iyi okunabilirlik için, hepsini column komutuyla yöneltebilirsiniz ve her şeyi otomatik olarak yeniden boyutlandıracak şekilde sıralanacaktır.

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

Oli'nin yanıtladığı gibi, find bir dizin ağacının tamamını aramanıza izin verecektir:

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

Ayrıca -type f sonuçları sadece dosyalarla sınırlama seçeneği. Bir dosya deseniyle eşleşmek istiyorsanız, -name veya -iname seçenekleri (büyük/küçük harfe duyarlı ve büyük/küçük harf duyarsız eşleme). find 'ın man sayfasını okuyun - aramanızı daraltmak/daraltmak için kullanabileceğiniz önemli miktarda seçenek var.

Ve bir kenara bıraktığınız gibi, size birden fazla tarama verisinin size geri atılmasını bekliyorsanız, sonuçlarınızı less yoluyla yönlendirmeyi unutmayın.

@Oli: +1 Ben de yeni bir şey öğrendim - column. Bunu daha önce kullanmamıştı.

4
Will

ls, Ubuntu ve diğer Linux ve Unix işletim sistemlerindeki dosyaları listelemek için standart komuttur. ls'nin öğrenilmesi özellikle yararlıdır çünkü karşılaştığınız her Unix sistemine yüklendiğini göreceksiniz. Varsayılan olarak, bu yalnızca geçerli dizindeki dosyaları görüntüler.

Ancak -R 'flag' özyinelemeli seçeneğidir (sermayeye dikkat edin R , değil r) size tüm alt dizinleri de gösterecektir.

Siz de "ayrıntılar" istediniz - bunun için -l bayrağı (bu bir küçük harf L, bir numara değil). Bunun size dosya izin bilgilerinin yanı sıra dosya boyutu, saat/tarih bilgisi ve dosya adı verdiğini unutmayın.

Gizli dosya/klasörleri de göstermek istiyorsanız ( Ctrl+H Nautilus'ta) ardından -a 'tümü' bayrağı.

Size bir şey vermek için bayrakları birleştirebilirsiniz:

ls -lR

Eğer herhangi bir iyi büyüklükte bir klasörde çalıştırırsanız, bu ekran çok hızlı aşağı kaydırır büyük bir uzun çıktı üretir göreceksiniz. Bu sorunu aşmak için, ls çıktısını less adlı bir program aracılığıyla 'aktarabilirsiniz' (ad, ilk başta yaklaşık olan ancak sahip olan more'ın bir parodisidir. daha fazla özellik).

ls -lR | less

Bu, çıktıyı daha rahat bir hızda görmek için Yukarı/Aşağı ok tuşlarını kullanmanıza olanak tanır.

3
8128

Bunun için özel olarak bir program oluşturdum - Dizin Anlık Görüntüsü .
Bir dizinde yinelemeli olarak yinelenir ve karşılaştığı tüm dosya ve klasörlerin adlarını ve boyutlarını giriş dizinine benzer bir kuruluşa sahip düzgün yapılandırılmış HTML dosyalarında saklar.
Başka bir deyişle, bu dir /s veya tree /f komutlar.

0

Krusader'ı kullanma:

  1. Ara (Ctl-S) kullanın.
  2. "Alt dizinlerde ara" seçeneğini işaretleyin.
  3. "Ara" yı tıklayın.
  4. Arama tamamlandığında, "Liste kutusuna yayınla" yı tıklayın.

Bu, tüm paneli diğer panele vb. Sürükleyerek işlemenizi sağlar.

0
Frank Z.

Nautilus betiğine ne dersiniz?

#!/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"

Yükleme yönergeleri: Nautilus betiğini nasıl yükleyebilirim?

0
Glutanimate

Nautilus

  1. Liste görünümünde genişleyen alt klasörleri etkinleştirin
  2. Bir klasörü tıklayın ve yıldız işaretine basın (* sayısal tuş takımında veya Shift+8) bir alt alt düzey düzeyini genişletmek için kullanılır. Yıldız tuşuna her bastığınızda, bir sonraki seviyeyi genişletecektir.

Bu Nemo'da da çalışır.

0
wjandrea