모든 폴더 목록(레이어 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
혼란스러울 수도 있지만 저는 전문가가 아닙니다. 모든 도움에 감사드립니다.