재귀 매니페스트 디렉터리를 만드는 방법

재귀 매니페스트 디렉터리를 만드는 방법

수천 개의 파일 목록과 해당 디렉터리 경로를 반복적으로 생성해야 합니다.

다음은 매니페스트 출력이 필요한 방법에 대한 예입니다.

This_is_an_example/of_how/i_want_to_display/absolute_paths/
examplefiles.md5
examplefiles.txt
examplefile.wav

This_is_an_example/of_how/i_want_to_display/absolute_paths/part_2/
examplefiles.md5
examplefiles.txt
examplefile.wav

이 명령을 사용 tree -fai > manifest.txt하면 필요한 것에 가까워지지만 절대 경로 뒤에 개행 문자가 생성되지는 않습니다.

둘째, 하위 디렉터리의 순차 파일을 1줄의 입력으로 출력하고 싶습니다.

This_is_an_example/of_how/i_want_to_display/absolute_paths/part_3/
test_file_here_0000001.dpx
test_file_here_0000002.dpx
test_file_here_0000003.dpx
test_file_here_0000004.dpx

다음과 같이 표시됩니다

 This_is_an_example/of_how/i_want_to_display/absolute_paths/part_4/
 test_file_here_[0000000-0000004].dpx

답변1

에서 man:

  -R, --recursive
          list subdirectories recursively

노력하다,

ls -R /path/to/dir

좀 더 가까이,

ll -R /path/to/dir | awk '$1!="total"{print $NF}'

답변2

find . -print | perl -pe 'a=$_; chomp $a; -d $a or s:.*/::'

답변3

디렉토리를 찾고 그 내용을 나열하고 싶으므로 find다음을 사용하는 것이 좋습니다.

find /path/to/dir -type d -exec bash -O dotglob -O nullglob -c '
    for pathname do
        header=0
        for filename in "$pathname"/*; do
            if [ ! -d "$filename" ]; then
                if [ "$header" -eq 0 ]; then
                    printf "%s/\n" "${pathname%/}"
                    header=1
                fi
                printf "%s\n" "${filename##*/}"
            fi
        done
        [ "$header" -eq 1 ] && printf "\n"
    done' bash {} +

그러면 주어진 디렉토리 경로 안이나 아래에 있는 모든 디렉토리를 찾습니다. 이는 이러한 모든 디렉터리의 경로 이름을 bash스크립트에 제공합니다.

스크립트 bash는 각 디렉터리를 반복하여 디렉터리 경로 이름을 헤더로 인쇄하고 해당 디렉터리에 있는 디렉터리가 아닌 항목을 나열합니다. 마지막으로 디렉터리에 디렉터리가 아닌 파일이 하나 이상 있으면 추가 줄 바꿈이 출력됩니다.

빈 디렉터리나 디렉터리만 포함된 디렉터리는 나열되지 않습니다.

다음과 같은 디렉토리 구조의 경우

/dir
`-- a
    |-- b
    |   `-- c
    |       |-- .hidden_file
    |       `-- file
    `-- file

그러면 다음과 같은 출력이 생성됩니다.

/dir/a/
file

/dir/a/b/c/
.hidden_file
file

관련 정보