2017-03-23 3 views
2

현재 수업 중 Linux 장치에서 쉘 스크립팅을 공부하고 있으며 지금까지 내 기술을 능가하는 추가 작업을 수행하고 있습니다.symlink가 빈 폴더를 가리키는 지 확인하는 방법

빈 폴더를 가리키는 심볼릭 링크를 찾는 셸 스크립트를 작성해야했습니다. 이제 처음 두 부분은 쉽습니다 - -type l-xtype d과 같은 테스트와 함께 find 명령을 사용하는 방법을 알고 있습니다. 폴더 자체가 비어 있는지 확인하면 문제가 발생합니다. 선생님 께 물어 봤지만, 지시에 따라 실제로 사용할 수없는 xargs 또는 exec 인수에 대한 암시적인 힌트 만있었습니다. 지금까지 가장 좋은 방법은 find의 결과를 for 루프에 던져서 각 루프의 링크에서 얻은 경로를 테스트하는 것이지만 작동하지 않는 것입니다. 지금까지 내 코드는 다음과 같습니다

for var in $`find $1/* -type l -xtype d -print` 
do 
    if [ $`readlink -f $var` -empty ] 
    then 
    echo $`readlink -f $var` 
    fi 
done 

어떤 도움도 대단히 감사하겠습니다!

답변

2

-empty 옵션을 찾으십니까?

$ mkdir empty_folder 
$ ln -s empty_folder/ symlink 
$ find symlink -type d -empty 
symlink 

이 또한 파일 이름 확장으로 수행 할 수 있습니다.

$ shopt -s dotglob failglob 
$ true symlink/* 
bash: no match: symlink/* 
+0

두 번째 부분의 의미는 모르겠지만 그 설명서를 읽으겠습니다. 첫 번째 부분에서는 선택한 디렉토리 트리에서 모든 심볼릭 링크를 찾아야하지만'-type d -empty'를 사용하여 심볼릭 링크가 빈 폴더를 가리키는 지 확인할 수 있습니까? – DeadBrain

+0

심볼릭 링크에 관한 전체적인 동작은 https://www.gnu.org/software/findutils/manual/html_mono/find.html#Symbolic-Links에 나와 있습니다. 그러나 나는 그것이 무엇을하는지 완전히 모르겠다는 것을 인정할 것입니다. –

관련 문제