내 데이터 구조는 다음과 같습니다.
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