폴더가 비어 있는 경우 "비우기 터치"를 재귀적으로 실행하는 방법은 무엇입니까?

폴더가 비어 있는 경우 "비우기 터치"를 재귀적으로 실행하는 방법은 무엇입니까?

Git에 프로젝트를 추가할 때 빈 폴더가 포함된 폴더 구조를 유지하고 싶습니다. 우리 모두 알고 있듯이 Git은 빈 폴더를 추적하지 않습니다. 따라서 빈 폴더에 일종의 자리 표시자를 추가해야 합니다.

지금까지 다음을 사용하여 재귀적으로 빈 폴더를 찾았습니다.

find ./* -type d -empty

어떻게 진행하나요? 그렇다면 명령 후에 모든 빈 폴더에는 "empty"라는 파일이 포함되어 있습니까?

답변1

find . -type d -empty -exec touch {}/empty \;

답변2

touch empty디렉터리에서 실행합니다.

find ... -execdir touch empty \;

답변3

"bash로 이것을 할 수 있습니다"라는 의무적인 답변은 다음과 같습니다.

shopt -s globstar nullglob
for f in ./**/; do [[ $(echo "$f"*) == '' ]] && touch "$f"empty; done

Globstar는 " **디렉터리의 모든 파일로 재귀적으로 확장"을 의미합니다. **/즉, 일반 파일이 아닌 디렉터리로만 확장됩니다(파일 이름에는 슬래시가 포함될 수 없으므로).

Nullglob은 어떤 것과도 일치하지 않는 glob이 null 바이트로 확장된다는 의미입니다. 이 테스트는 이러한 일이 발생하는지 확인합니다(디렉토리에 아무것도 없음을 의미). 테스트가 true(디렉토리에 아무것도 없음을 의미)이면 디렉터리 touch에 있는 것입니다.empty

관련 정보