트리의 모든 파일을 나열하는 방법 (디렉토리 및 하위 디렉토리)?


41

내 작업을 위해 트리의 모든 파일 (디렉토리, 모든 하위 디렉토리, 모든 하위 디렉토리 등)을 나열해야합니다.

나는 노틸러스 나 Krusader에서 그것들을보고 싶지만, 명령 줄 솔루션도 흥미 롭습니다 (이 경우 파일의 전체 이름, 크기 및 수정 시간이 나열되어야합니다).


이 질문은이 끔찍한 전망을 많이. 아마도 다른 사람들이 @Ivan을 시간을 절약하기 위해 가장 도움이되는 답변을 받아 들일 수 있습니까?
starbeamrainbowlabs

답변:


39

나무 는 당신에게 매우 편리합니다.

sudo apt-get install tree

사용하여 tree filepath파일을 나열 할 수 있습니다.


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옵션 (대소 문자 구분 및 대소 문자 구분 안함)이 필요합니다. find의 매뉴얼 페이지를 읽어보십시오 . 검색 범위를 좁히거나 구체화하는 데 사용할 수있는 옵션이 많이 있습니다.

또한 제쳐두고, 여러 화면 데이터가 다시 발생할 것으로 예상되는 경우 결과를로 전달해야합니다 less.

@Oli : +1 방금 새로운 것을 배웠습니다 column. 전에는 사용하지 않았습니다.


3

lsUbuntu 및 기타 Linux 및 Unix 운영 체제에서 파일을 나열하는 표준 명령입니다. ls여러분이 만나는 모든 유닉스 시스템에 설치되어 있기 때문에 배우는 데 특히 유용합니다. 기본적으로이 옵션을 실행하면 현재 디렉토리의 파일 만 표시됩니다.

그러나 -R'플래그'는 모든 하위 디렉토리를 보여주는 재귀 옵션 ( r이 아닌 대문자 R 참고 )입니다.

"세부 사항"도 요청했습니다.이를 위해서는 -l플래그가 필요합니다 (1이 아닌 소문자 L 임). 파일 크기, 시간 / 날짜 정보 및 파일 이름뿐만 아니라 파일 권한 정보도 제공합니다.

숨겨진 파일 / 폴더 ( 노틸러스 의 Ctrl+ H에 해당)도 표시 하려면 -a'all'플래그 를 추가하십시오 .

플래그를 함께 병합하여 다음과 같은 것을 제공 할 수 있습니다.

ls -lR

적당한 크기의 폴더에서 이것을 실행하면 화면이 매우 빠르게 스크롤되는 큰 긴 출력이 생성됩니다. 이 문제를 해결하기 위해 ls호출 된 프로그램 을 통해 결과를 '파이프'할 수 있습니다 less(이름은 유사하지만 패러디는 유사 more하지만 더 많은 기능이 있습니다).

ls -lR | less

이렇게하면 PageUp / Down과 함께 위쪽 / 아래쪽 화살표 키를 사용하여보다 편안한 속도로 출력을 진행할 수 있습니다.


0

Krusader 사용 :

  1. 검색 (Ctl-S)을 사용하십시오.
  2. "하위 디렉토리에서 검색"을 확인하십시오.
  3. "검색"을 클릭하십시오.
  4. 검색이 완료되면 "목록 상자에 피드"를 클릭하십시오.

그러면 다른 패널 등으로 드래그하여 전체 로트를 처리 할 수 ​​있습니다.


0

방법에 대한 노틸러스 스크립트 ?

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

설치 지침 : 노틸러스 스크립트는 어떻게 설치합니까?


0

디렉토리 전용 스냅 샷 프로그램을 만들었습니다 .
디렉토리를 반복적으로 반복하고 발견되는 모든 파일과 폴더의 이름과 크기를 깔끔하게 구조화 된 HTML 파일에 저장합니다.이 파일은 입력 디렉토리와 유사한 구조를 갖습니다.
다시 말해 이것은 하이퍼 링크 버전의 dir /sor tree /f명령 으로 생각할 수 있습니다 .


당신이 쓴 dirtree내가 우분투, 윌이 일을 물어 그래서, DOS 스타일 옵션?
wjandrea

예, 실제로 주말마다 Ubuntu 설치에서 실행되도록 예약했습니다. 비록 C ++과 Boost를 사용하여 빌드되었으므로 바이너리를 컴파일하고 생성하는 것은 약간 힘들 것입니다. 그래서 파이썬으로 포팅하는 과정에 있습니다. 어쨌든 원하는 경우 사전 컴파일 된 바이너리를 제공 할 수 있습니다.
Anmol Singh Jaggi

0

노틸러스

  1. 목록보기에서 확장 하위 폴더 사용
  2. 폴더를 클릭하고 별표 ( *숫자 패드 또는 Shift+ 8)를 누르면 한 수준의 하위 디렉토리가 확장됩니다. 별표를 누를 때마다 다음 단계로 확장됩니다.

이것은 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.