일부 명명된 디렉터리 및 파일을 제외하고 하위 수준 디렉터리 나열

일부 명명된 디렉터리 및 파일을 제외하고 하위 수준 디렉터리 나열

모든 폴더 목록(레이어 1개 포함)을 txt 파일로 보내고 싶습니다. 일부 명명된 폴더는 포함되지 않으며 파일도 포함되지 않습니다. 이와 같은 폴더 구조를 상상해보십시오. CAPS는 폴더입니다.

FOLDER 1

.hidden

TEMP

somefile

=========

=========

FOLDER 2

.hidden

TEMP

DATA1

DATA2

somefile

========

========

FOLDER 3

.hidden

TEMP

DATA1

somefile

"여기에 마법 명령 삽입"을 실행하고 아래와 같은 출력을 얻고 싶습니다.

FOLDER 1

FOLDER 2

DATA1

DATA2

FOLDER 3

DATA1

답변1

폴더 구조를 만들려면 다음과 같이 하세요.

for     f in    FOLDER\ 1 FOLDER\ 2 FOLDER\ 3
do      mkdir   -p "$f/TEMP"
        touch   "$f/.hidden" "$f/somefile"
        case    "$f" in
        (*2)    mkdir -p    "$f/DATA1/TEMP" "$f/DATA2/TEMP";;
        (*3)    mkdir -p    "$f/DATA1/TEMP"
        esac
done

그러면 다음과 같은 트리가 생성됩니다.

find .

.
./FOLDER 1
./FOLDER 1/TEMP
./FOLDER 1/.hidden
./FOLDER 1/somefile
./FOLDER 2
./FOLDER 2/TEMP
./FOLDER 2/.hidden
./FOLDER 2/somefile
./FOLDER 2/DATA1
./FOLDER 2/DATA1/TEMP
./FOLDER 2/DATA2
./FOLDER 2/DATA2/TEMP
./FOLDER 3
./FOLDER 3/TEMP
./FOLDER 3/.hidden
./FOLDER 3/somefile
./FOLDER 3/DATA1
./FOLDER 3/DATA1/TEMP

드디어 해냈습니다...

find . ! -path './*/*/*' ! -name TEMP -type d

.
./FOLDER 1
./FOLDER 2
./FOLDER 2/DATA1
./FOLDER 2/DATA2
./FOLDER 3
./FOLDER 3/DATA1

답변2

감사합니다. 잘 작동했습니다. .hidden도 폴더라는 사실을 잊어버렸기 때문에 find 명령에 추가했습니다. 추가된 순서대로 출력 폴더를 찾으려면 sort 명령을 사용하여 알파벳순으로 정렬하세요. 그래서 나는 결국

find . ! -path './*/*/*' ! -name TEMP ! -name .hidden -type d | sort > folderlist.txt

결과를 조금 정리하세요.

sed -n -e 's;^.*/;;p'

그래서 다음과 같이 나열됩니다.

폴더 1

폴더 2

데이터 1

데이터 2

폴더 3

데이터 1

드디어 이 짐승 같은 라인을 얻었습니다

find . ! -path './*/*/*' ! -name TEMP ! -name .hidden -type d | sort | sed -n -e 's;^.*/;;p' > folderlist.txt

혼란스러울 수도 있지만 저는 전문가가 아닙니다. 모든 도움에 감사드립니다.

관련 정보