디렉토리에 파일이 있는지 셸 스크립트에서 확인
셸 스크립트에서 디렉토리에 파일이 있는지 확인하려면 어떻게 해야 합니까?
이것과 비슷한 것.
if [ -e /some/dir/* ]; then echo "huzzah"; fi;
그러나 디렉터리에 하나 이상의 파일이 포함된 경우에는 작동합니다(위의 파일은 정확히 0개 또는 1개의 파일에서만 작동함).
3가지 최고의 트릭
shopt -s nullglob dotglob; f=your/dir/*; ((${#f}))
이 속임수는 100%입니다.bash
하위 셸을 호출(실행)합니다.이 아이디어는 Bruno De Fraine의 아이디어로 팀밥의 코멘트로 개선되었습니다.
files=$(shopt -s nullglob dotglob; echo your/dir/*)
if (( ${#files} ))
then
echo "contains files"
else
echo "empty (or does not exist or is a file)"
fi
참고: 빈 디렉터리와 없는 디렉터리(제공된 경로가 파일인 경우에도)는 차이가 없습니다.
#bash IRC 채널에 대한 '공식' FAQ에도 유사한 대안과 자세한 내용(및 더 많은 예)이 있습니다.
if (shopt -s nullglob dotglob; f=(*); ((${#f[@]})))
then
echo "contains files"
else
echo "empty (or does not exist, or is a file)"
fi
[ -n "$(ls -A your/dir)" ]
이 속임수는 2007년에 게시된 nixCraft의 기사에서 영감을 받았습니다.더하다2>/dev/null
출력 오류를 억제하기 위해"No such file or directory"
.
Andrew Taylor의 답변(2008)과 gr8can8dian의 답변(2011)도 참조하십시오.
if [ -n "$(ls -A your/dir 2>/dev/null)" ]
then
echo "contains files (or is a file)"
else
echo "empty (or does not exist)"
fi
또는 한 줄 바시즘 버전:
[[ $(ls -A your/dir) ]] && echo "contains files" || echo "empty"
참조: ls
아온다를 합니다.$?=2
디렉터리가 존재하지 않는 경우.그러나 파일과 빈 디렉토리 사이에는 차이가 없습니다.
[ -n "$(find your/dir -prune -empty)" ]
이 마지막 속임수는 Gravstar의 대답에서 영감을 받았습니다.-maxdepth 0
는 대됨체로 대체됩니다.-prune
필스의 말을 듣고 발전했습니다.
if [ -n "$(find your/dir -prune -empty 2>/dev/null)" ]
then
echo "empty (directory or file)"
else
echo "contains files (or does not exist)"
fi
을이한변주를 이용한 -type d
:
if [ -n "$(find your/dir -prune -empty -type d 2>/dev/null)" ]
then
echo "empty directory"
else
echo "contains files (or does not exist or is not a directory)"
fi
설명:
find -prune
는 와유합다니와 유사합니다.find -maxdepth 0
를 적게find -empty
및 합니다.find -type d
만 인쇄합니다.
참고: 교체할 수도 있습니다.[ -n "$(find your/dir -prune -empty)" ]
아래의 단축 버전에 의해:
if [ `find your/dir -prune -empty 2>/dev/null` ]
then
echo "empty (directory or file)"
else
echo "contains files (or does not exist)"
fi
이 마지막 코드는 대부분의 경우 작동하지만 악의적인 경로가 명령을 표현할 수 있다는 점에 유의하십시오.
은 지까지사솔루션된을 합니다.ls
Allbash 솔루션은 다음과 같습니다.
#!/bin/bash
shopt -s nullglob dotglob # To include hidden files
files=(/some/dir/*)
if [ ${#files[@]} -gt 0 ]; then echo "huzzah"; fi
다음은 어떻습니까?
if find /some/dir/ -maxdepth 0 -empty | read v; then echo "Empty dir"; fi
이렇게 하면 디렉토리의 전체 내용 목록을 생성할 필요가 없습니다. 그read
출을삭제어예것고읽참때평표것으을가로입는다니하을만식현을하떤력예▁only▁is것:▁to(▁the▁to평iion입▁evaluate▁both다니▁discard▁true▁the▁make▁express가는▁and:/some/dir/
에 의해 빈 상태로 발견됨find
).
시도:
if [ ! -z `ls /some/dir/*` ]; then echo "huzzah"; fi
파일이 많은 디렉터리에 주의하십시오!평가하는 데 시간이 좀 걸릴 수 있습니다.ls
지휘권
IMO 최고의 솔루션은 다음을 사용하는 것입니다.
find /some/dir/ -maxdepth 0 -empty
# Works on hidden files, directories and regular files
### isEmpty()
# This function takes one parameter:
# $1 is the directory to check
# Echoes "huzzah" if the directory has files
function isEmpty(){
if [ "$(ls -A $1)" ]; then
echo "huzzah"
else
echo "has no files"
fi
}
DIR="/some/dir"
if [ "$(ls -A $DIR)" ]; then
echo 'There is something alive in here'
fi
이것의 출력을 비교해 주시겠습니까?
ls -A /some/dir | wc -l
이것은 정말 늦은 답변일 수 있지만 여기 효과적인 해결책이 있습니다.이 줄은 파일의 존재만 인식합니다!디렉터리가 있는 경우 잘못된 긍정을 제공하지 않습니다.
if find /path/to/check/* -maxdepth 0 -type f | read
then echo "Files Exist"
fi
ZSH
질문이 bash로 표시된 것은 알지만, 참고로 zsh 사용자의 경우:
비어 있지 않은 디렉터리 테스트
여부 foo
비어 있지 않음:
$ for i in foo(NF) ; do ... ; done
어디서, 만약에foo
있지 . 이 비어있않에 . 코드는for
블록이 실행됩니다.
빈 디렉터리 테스트
여부 foo
비어 있음:
$ for i in foo(N/^F) ; do ... ; done
어디서, 만약에foo
비어 있습니다. 이비어있에 . 코드는for
블록이 실행됩니다.
메모들
를 인용할 필요가 없었습니다.foo
위에서, 하지만 우리가 필요하다면 그렇게 할 수 있습니다.
$ for i in 'some directory!'(NF) ; do ... ; done
디렉터리가 아니더라도 둘 이상의 개체를 테스트할 수 있습니다.
$ mkdir X # empty directory
$ touch f # regular file
$ for i in X(N/^F) f(N/^F) ; do echo $i ; done # echo empty directories
X
디렉토리가 아닌 모든 항목은 무시됩니다.
엑스트라
우리는 글러브링을 하기 때문에 어떤 글러브(또는 브레이스 확장)도 사용할 수 있습니다.
$ mkdir X X1 X2 Y Y1 Y2 Z
$ touch Xf # create regular file
$ touch X1/f # directory X1 is not empty
$ touch Y1/.f # directory Y1 is not empty
$ ls -F # list all objects
X/ X1/ X2/ Xf Y/ Y1/ Y2/ Z/
$ for i in {X,Y}*(N/^F); do printf "$i "; done; echo # print empty directories
X X2 Y Y2
배열에 배치된 개체를 검사할 수도 있습니다.위와 같은 디렉토리를 사용하면 다음과 같습니다.
$ ls -F # list all objects
X/ X1/ X2/ Xf Y/ Y1/ Y2/ Z/
$ arr=(*) # place objects into array "arr"
$ for i in ${^arr}(N/^F); do printf "$i "; done; echo
X X2 Y Y2 Z
따라서 배열 매개 변수에 이미 설정되어 있는 개체를 테스트할 수 있습니다.
로 의코의 for
블록은 모든 디렉토리에서 차례로 실행됩니다.이것이 바람직하지 않으면 배열 매개 변수를 입력한 다음 해당 매개 변수에 대해 작업을 수행하면 됩니다.
$ for i in *(NF) ; do full_directories+=($i) ; done
$ do_something $full_directories
설명.
에게는 zsh ▁the가 있습니다.(F)
한정자)man zshexpn
는 "공백이 ) 일치합니다.
$ mkdir X Y
$ touch Y/.f # Y is now not empty
$ touch f # create a regular file
$ ls -dF * # list everything in the current directory
f X/ Y/
$ ls -dF *(F) # will list only "full" directories
Y/
예전(F)
일치하는 개체를 나열합니다. 는 디렉터리이며 비어 있지 않습니다.그렇게,(^F)
일치: 디렉토리가 없거나 비어 있습니다.따라서,(^F)
예를 들어 일반 파일도 나열할 수 있습니다.따라서, 위에서 설명한 바와 같이.zshexp
맨 페이지, 우리는 또한 필요합니다.(/)
디렉토리만 나열하는 글로벌 한정자:
$ mkdir X Y Z
$ touch X/f Y/.f # directories X and Y now not empty
$ for i in *(/^F) ; do echo $i ; done
Z
따라서 지정된 디렉토리가 비어 있는지 확인하기 위해 다음을 실행할 수 있습니다.
$ mkdir X
$ for i in X(/^F) ; do echo $i ; done ; echo "finished"
X
finished
비어 있지 않은 디렉터리가 캡처되지 않도록 하기 위해 다음을 수행합니다.
$ mkdir Y
$ touch Y/.f
$ for i in Y(/^F) ; do echo $i ; done ; echo "finished"
zsh: no matches found: Y(/^F)
finished
아! 그 이후로Y
비어 있지 않습니다. zsh에서 일치하는 항목을 찾을 수 없습니다.(/^F)
("빈 디렉토리")를 선택하여 글로벌과 일치하는 항목을 찾을 수 없다는 오류 메시지를 표시합니다.그러므로 우리는 이러한 가능한 오류 메시지를 억제할 필요가 있습니다.(N)
글로벌 한정자:
$ mkdir Y
$ touch Y/.f
$ for i in Y(N/^F) ; do echo $i ; done ; echo "finished"
finished
따라서 빈 디렉토리의 경우 한정자가 필요합니다.(N/^F)
다음과 같이 읽을 수 있습니다. "실패에 대해 경고하지 않음, 꽉 차지 않은 디렉터리".
마찬가지로 비어 있지 않은 디렉토리의 경우 한정자가 필요합니다.(NF)
마찬가지로 "실패에 대해 경고하지 마십시오, 전체 디렉터리"라고 읽을 수 있습니다.
디렉터리에 숨겨진 파일이 있는지 확인합니다. #사용: "$HOME"이 비어 있는 경우, "집에 오신 것을 환영합니다"; fi#비어 있습니다({)._ief in $1/*; 하다만약 [ -e "$_ief" ]; 그렇다면반환 1fi다 했어요.반환 0}
일부 구현 참고 사항:
- 그
for
외호방지합니다출을에 을 피합니다.ls
을 한 읽습니다.여전히 모든 디렉토리 항목을 한 번 읽습니다.이것은 readdir()를 명시적으로 사용하는 C 프로그램을 작성해야만 최적화될 수 있습니다. - 그
test -e
디렉토리의 합니다. 이 는 " " " " " 입니다. " " 입니다._ief
이 됩니다. "somedir/*"는 "somedir/*"입니다.가 "합니다. - 이 기능은 모든 POSIX 구현에서 작동합니다.그러나 Solaris /bin/sh는 해당 범주에 속하지 않습니다.그것의.
test
" 구이지않니다습지하원현▁를 지원하지 않습니다.-e
깃발
디렉토리가 비어 있는지 또는 비어 있지 않은 경우 포함된 파일 수를 알려줍니다.
directory="/some/dir"
number_of_files=$(ls -A $directory | wc -l)
if [ "$number_of_files" == "0" ]; then
echo "directory $directory is empty"
else
echo "directory $directory contains $number_of_files files"
fi
dir_is_empty() {
[ "${1##*/}" = "*" ]
}
if dir_is_empty /some/dir/* ; then
echo "huzzah"
fi
이이지정파없가정니다라는 이름의 이 없다고.*
안으로/any/dir/you/check
효과가 있을 것입니다.bash
dash
posh
busybox sh
그리고.zsh
) 하만필 (zsh의경우) 요니다가 필요합니다.unsetopt nomatch
.
은 어떤 공연과 것이어야 합니다.ls
떤어용로를 *
(글로벌), 노드가 많은 디렉토리에서 속도가 느릴 것 같습니다(내/usr/bin
3000개 이상의 파일이 있는 경우에는 그렇게 느려지지 않았습니다). 모든 dirs/filename(및 그 이상)을 인수로 함수에 전달(전달)하기 때문에 적어도 충분한 메모리를 사용합니다. 일부 셸은 인수의 수 및/또는 인수의 길이에 제한이 있을 수 있습니다.
디렉토리가 비어 있는지 확인할 수 있는 휴대용 빠른 O(1) 제로 리소스 방법이 있으면 좋습니다.
갱신하다
은 위않다를지파숨일하설/dir명니와 더 파일/dir를 예를 들어, 다음과 같은 추가 테스트가 필요한 경우.is_empty
Rich's sh(POSIX 쉘) 트릭에서:
is_empty () (
cd "$1"
set -- .[!.]* ; test -f "$1" && return 1
set -- ..?* ; test -f "$1" && return 1
set -- * ; test -f "$1" && return 1
return 0 )
대신에, 저는 다음과 같은 것을 생각하고 있습니다.
dir_is_empty() {
[ "$(find "$1" -name "?*" | dd bs=$((${#1}+3)) count=1 2>/dev/null)" = "$1" ]
}
있을 때 및이 뒤로 하는 것에 대한 는 new line( 함)을도 my dir에서 find ind ▁some▁when는▁my▁and▁on▁about),▁sadly▁dir▁sl(려우▁trailing▁argument▁concern▁the입니프다▁fromrences▁the▁the것▁(나도출게의슬▁output▁isbusybox
sh
무엇이 아마도 버그인지 보여줍니다.find -> dd
가 " " " " " 를 사용했다면 " " " " " " " " " " " " " " " " " " ( " " " " " 을 사용했습니다.cat
출력은 항상 동일한 것으로 보입니다.dd
함께과장▁argument라는 인수로count
).
올리브레의 대답에서 힌트를 얻거나(또는 여러 가지), 저는 바시 함수를 좋아합니다.
function isEmptyDir {
[ -d $1 -a -n "$( find $1 -prune -empty 2>/dev/null )" ]
}
하나의 하위 셸을 생성하지만 O(1) 솔루션에 가깝기 때문에 이름을 붙이면 읽을 수 있습니다.그러면 쓸 수 있습니다.
if isEmptyDir somedir
then
echo somedir is an empty directory
else
echo somedir does not exist, is not a dir, is unreadable, or is not empty
fi
O(1)의 경우 이상한 경우가 있습니다. 큰 디렉터리에 마지막 항목을 제외한 모든 항목이 삭제된 경우, "찾기"는 빈 항목을 확인하기 위해 전체를 읽어야 할 수 있습니다.예상 성능은 O(1)이지만 최악의 경우 디렉토리 크기가 선형입니다.나는 이것을 측정하지 않았습니다.
빈 디렉토리에 대한 울 엣지 가이드가 언급되지 않은 것이 놀랍습니다.이 가이드와 모든 울 엣지는 셸 유형의 질문을 위해 반드시 읽어야 합니다.
그 페이지의 주목할 점:
ls 출력을 구문 분석하지 마십시오.심지어 ls -A 솔루션도 깨질 수 있습니다(예: HP-UX에서, 당신이 루트라면, ls -A는 당신이 루트가 아니라면 그것이 하는 것과 정반대의 일을 합니다). 그리고 아니요, 저는 그렇게 멍청한 것을 만들 수 없습니다.
사실, 사람들은 직접적인 질문을 완전히 피하고 싶을 수도 있습니다.일반적으로 사람들은 디렉토리에 있는 파일과 관련된 작업을 수행하기 때문에 디렉토리가 비어 있는지 여부를 알고 싶어 합니다.더 큰 질문에 주목하세요.예를 들어, 다음과 같은 검색 기반 예제 중 하나가 적절한 솔루션일 수 있습니다.
# Bourne
find "$somedir" -type f -exec echo Found unexpected file {} \;
find "$somedir" -maxdepth 0 -empty -exec echo {} is empty. \; # GNU/BSD
find "$somedir" -type d -empty -exec cp /my/configfile {} \; # GNU/BSD
가장 일반적으로 필요한 것은 다음과 같은 것입니다.
# Bourne
for f in ./*.mpg; do
test -f "$f" || continue
mympgviewer "$f"
done
즉, 질문을 하는 사람은 mympgviewer: ./*.mpg: 실제로 이러한 테스트가 필요하지 않은 경우에는 해당 파일 또는 디렉토리가 없습니다.와 같은 오류 메시지를 방지하기 위해 명시적인 빈 디렉토리 테스트가 필요하다고 생각했을 수 있습니다.
브루노의 대답은 약간 다릅니다.
files=$(ls -1 /some/dir| wc -l)
if [ $files -gt 0 ]
then
echo "Contains files"
else
echo "Empty"
fi
저한테는 효과가 있어요.
몇 가지 해결 방법을 통해 디렉터리에 파일이 있는지 확인할 수 있는 간단한 방법을 찾을 수 있었습니다.이는 특히 .xml 또는 .txt 파일 등을 확인하기 위해 grep 명령을 사용하여 더 확장할 수 있습니다.예:ls /some/dir | grep xml | wc -l | grep -w "0"
#!/bin/bash
if ([ $(ls /some/dir | wc -l | grep -w "0") ])
then
echo 'No files'
else
echo 'Found files'
fi
if [[ -s somedir ]]; then
echo "Files present"
fi
5 5.0.17을 사용한 테스트에서[[ -s somedir ]]
true가 true이면 됩니다.somedir
아이들이 있습니다.에 대해서도 마찬가지입니다.[ -s somedir ]
숨겨진 파일 또는 하위 디렉터리가 있는 경우에도 true가 반환됩니다.파일 시스템에 종속되어 있을 수도 있습니다.
정말로 할 수 있는 선택권이 있어야 할 것처럼 느껴집니다.test
빈 디렉토리의 경우.저는 그 편집 코멘트를 테스트 명령의 유지 관리자들에게 제안으로 남기겠지만 빈 파일에 대한 대응이 존재합니다.
저를 여기까지 오게 한 사소한 사용 사례에서 저는 엄청난 수의 파일을 반복하는 것에 대해 걱정하지도 않고 .files에 대해서도 걱정하지 않습니다.나는 앞에서 언급한 "실종" 피연산자를 찾기를 희망했습니다.test
체스트라게르.
아래 예제에서는 디렉토리가 비어 있고 파일이 가득 찼습니다.
$ for f in empty/*; do test -e $f; done
$ echo $?
1
$ for f in full/*; do test -e $f; done
$ echo $?
0
또는 더 짧고 더 못생겼지만 비교적 사소한 사용 사례에만 적용됩니다.
$ echo empty/*| grep \*
$ echo $?
1
$ echo full/* | grep \*
$ echo $?
0
지금까지 저는 (이상한 기호가 너무 많지 않은) 더 간단한 대답을 할 수 있을 것 같은 grep를 사용하는 답을 보지 못했습니다.본 셸을 사용하여 디렉터리에 파일이 있는지 확인하는 방법은 다음과 같습니다.
디렉터리에 있는 파일 수를 반환합니다.
ls -l <directory> | egrep -c "^-"
디렉토리가 작성되는 디렉토리 경로를 입력할 수 있습니다.파이프의 첫 번째 절반은 각 파일에 대해 출력의 첫 번째 문자가 "-"가 되도록 합니다.그런 다음 egrep은 정규식을 사용하여 해당 기호로 시작하는 줄 수를 계산합니다.이제 얻은 숫자를 저장하고 다음과 같은 역따옴표를 사용하여 비교하기만 하면 됩니다.
#!/bin/sh
fileNum=`ls -l <directory> | egrep -c "^-"`
if [ $fileNum == x ]
then
#do what you want to do
fi
x는 선택한 변수입니다.
가지치기와 마지막 대답을 섞으면서, 저는 할 수 있었습니다.
find "$some_dir" -prune -empty -type d | read && echo empty || echo "not empty"
공백이 있는 경로에도 작동합니다.
bash를 사용한 간단한 답변:
if [[ $(ls /some/dir/) ]]; then echo "huzzah"; fi;
는 나는할것으로 .find
:
if [ -z "$(find $dir -maxdepth 1 -type f)" ]; then
echo "$dir has NO files"
else
echo "$dir has files"
이렇게 하면 하위 디렉터리를 거치지 않고 디렉터리에서 파일만 찾는 출력이 확인됩니다.그런 다음 다음 다음을 사용하여 출력을 확인합니다.-z
에 옵한션에서 가져온 man test
:
-z STRING
the length of STRING is zero
몇 가지 결과 보기:
$ mkdir aaa
$ dir="aaa"
빈 dir:
$ [ -z "$(find aaa/ -maxdepth 1 -type f)" ] && echo "empty"
empty
그냥 dirs in it:
$ mkdir aaa/bbb
$ [ -z "$(find aaa/ -maxdepth 1 -type f)" ] && echo "empty"
empty
디렉터리에 있는 파일:
$ touch aaa/myfile
$ [ -z "$(find aaa/ -maxdepth 1 -type f)" ] && echo "empty"
$ rm aaa/myfile
하위 디렉터리의 파일:
$ touch aaa/bbb/another_file
$ [ -z "$(find aaa/ -maxdepth 1 -type f)" ] && echo "empty"
empty
ls, find 등과 같은 유틸리티를 호출하지 않고:
POSIX safe(즉, Bash / xyz shell / ls / 등 버전에 종속되지 않음):
dir="/some/dir"
[ "$(echo $dir/*)x" != "$dir/*x" ] || [ "$(echo $dir/.[^.]*)x" != "$dir/.[^.]*x" ] || echo "empty dir"
아이디어:
echo *
에는 점이 아닌 이 나열됩니다.echo .[^.]*
에는 "." 및 "...을 제외한 도트 파일이 나열됩니다."- 한다면
echo
일치하는 항목을 찾을 수 없습니다. 검색 표현식을 반환합니다. 즉, 여기서*
또는.[^.]*
둘 다 실제 문자열이 아니며 문자열을 강요하기 위해 편지와 연결되어야 합니다. ||
단락에서 가능성을 대체합니다. 최소 하나 이상의 비점 파일 또는 dir 또는 최소 하나 이상의 점 파일 또는 디렉터리가 비어 있습니다. 실행 레벨: "첫 번째 가능성이 실패하면 다음을 시도하십시오. 이것이 실패하면 다음을 시도하십시오."; 여기서 기술적으로 Bash는 "실행을 시도합니다."echo "empty dir"
빈 dir에 대한 작업을 여기에 놓습니다(예: 종료).
심볼 링크를 사용하여 확인했지만 가능한 파일 형식을 사용하여 확인하지 않았습니다.
다른 스레드에서 디렉토리가 비어 있는지 테스트하는 방법 찾기를 제안했습니다.
[ "$(cd $dir;echo *)" = "*" ] && echo empty || echo non-empty
$dir가 존재하는 이유는 "디렉토리에 파일이 포함되어 있는지 셸 스크립트에서 확인 중"이기 때문이며, bigdir에서도 *가 그리 크지 않기 때문입니다. 시스템에서 /usr/bin/*은 12Kb에 불과합니다.
업데이트: Thans @hhh skladby, 고정된 것.
[ "$(cd $dir;echo .* *)" = ". .. *" ] && echo empty || echo non-empty
if ls /some/dir/* >/dev/null 2>&1 ; then echo "huzzah"; fi;
특정 대상 디렉토리를 테스트하기 위해
if [ -d $target_dir ]; then
ls_contents=$(ls -1 $target_dir | xargs);
if [ ! -z "$ls_contents" -a "$ls_contents" != "" ]; then
echo "is not empty";
else
echo "is empty";
fi;
else
echo "directory does not exist";
fi;
명령 찾기를 사용하여 시도합니다.하드코딩된 디렉토리 또는 인수로 지정합니다.그런 다음 찾기를 시작하여 디렉토리 내의 모든 파일을 검색합니다.찾기 반환이 null인지 확인합니다.찾기 데이터 에코
#!/bin/bash
_DIR="/home/user/test/"
#_DIR=$1
_FIND=$(find $_DIR -type f )
if [ -n "$_FIND" ]
then
echo -e "$_DIR contains files or subdirs with files \n\n "
echo "$_FIND"
else
echo "empty (or does not exist)"
fi
나는 그것을 싫어합니다.ls - A
게시된 해결 방법.디렉토리를 삭제하지 않기 때문에 디렉토리가 비어 있는지 테스트할 가능성이 높습니다.다음은 이를 수행합니다.그러나 빈 파일을 기록하려면 파일을 삭제하고 다시 생성하는 것이 무한대의 파일을 나열하는 것보다 더 빠릅니까?
이게 효과가 있을 거길...
if ! rmdir ${target}
then
echo "not empty"
else
echo "empty"
mkdir ${target}
fi
다음과 같은 경우에 적합합니다(존재하는 경우).
some_dir="/some/dir with whitespace & other characters/"
if find "`echo "$some_dir"`" -maxdepth 0 -empty | read v; then echo "Empty dir"; fi
전체 확인 시:
if [ -d "$some_dir" ]; then
if find "`echo "$some_dir"`" -maxdepth 0 -empty | read v; then echo "Empty dir"; else "Dir is NOT empty" fi
fi
언급URL : https://stackoverflow.com/questions/91368/checking-from-shell-script-if-a-directory-contains-files
'programing' 카테고리의 다른 글
Bash를 사용하여 날짜를 반복하는 방법은 무엇입니까? (0) | 2023.05.07 |
---|---|
MongoDB Atlas mongo 가져오기 문제로 인해 어레이를 D로 디코딩할 수 없습니다. (0) | 2023.05.07 |
ASP.NET MVC - 컨트롤러에서 App_Data 폴더의 절대 경로 찾기 (0) | 2023.05.02 |
View Result()와 Action Result() (0) | 2023.05.02 |
데이터 바인딩에서 두 가지 속성을 결합할 수 있습니까? (0) | 2023.05.02 |