![루프 "find...-type f": dir/subdir을 통해 파일 이름을 가져오고 dir_subdir_fname.txt라는 txt를 출력합니다.](https://linux55.com/image/148489/%EB%A3%A8%ED%94%84%20%22find...-type%20f%22%3A%20dir%2Fsubdir%EC%9D%84%20%ED%86%B5%ED%95%B4%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B3%A0%20dir_subdir_fname.txt%EB%9D%BC%EB%8A%94%20txt%EB%A5%BC%20%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4..png)
내 데이터 구조는 다음과 같습니다.
dir1/subdir1_level1/subdir1_level2.../subdir1_leveln
dir1/subdir2_level1/subdir2_level2.../subdir2_leveln
...
이것은 내가 사용하고 있는 레벨 구조가 올바르지 않다는 것을 의미합니다. 경로의 처음 두 수준을 기반으로 파일 이름을 가져와서 이를 dirn_subdirn_fname.txt라는 텍스트 파일로 출력하려는 목표를 성공적으로 달성했습니다.
find dir1/subdir1 -type f -printf "%f\n">dir1_subdir1_fname.txt
하지만 여러 디렉터리/하위 디렉터리 목록에 대해 이 프로세스를 반복하는 방법이 있는지 궁금합니다.
편집: 첫 번째 부분을 수행하는 방법을 찾았습니다.
#!/bin/bash
shopt -s dotglob nullglob
topdir= './Dir1'
for subdir in "$topdir"; do
find "$subdir" -type f -printf "%f\n"
done
답변1
Kindly try with below script
it will print up to 9 subdirectories files using find command keyword maxdepth
for i in {1..9}; do echo "below are files under $i steep afer parent path subdirectory"; find . -maxdepth $i -type f;echo "================================"; done