IF 루프를 사용하여 파일 또는 폴더가 있는지 여부를 확인하십시오.

나는 아무것도 넣지 않았다 강타, 그리고 제가 파이썬의 멋진 세계에 들어가는 동안 저를 많이 도와 준 다른 친구에 대해 조금 잊었습니다 🙂

제목에서 알 수 있듯이 여기에 Bash 애호가들에게 무언가를 넣었습니다. 다음을 사용하여 파일이나 폴더가 시스템에 존재하는지 여부를 확인하는 방법을 보여 드리겠습니다. if

.sh 파일을 생성하고 실행 권한을 부여 할 것입니다. 터미널에 다음 명령을 입력하면 충분합니다.

test.sh && chmod + x test.sh 터치

이것이 한 일은 파일 (test.sh 터치) 실행 권한 (chmod + x test.sh)

그런 다음 그 안에 다음을 작성해 보겠습니다.

if [ -d /opt/ ];
then
echo "Sí, sí existe."
else
echo "No, no existe"
fi

이게 뭐야?

간단합니다 😀

첫 번째 줄에서-» if [-d / opt /];

여기에서 / opt / 디렉토리가 있습니까? 예 디렉토리 / 폴더 때문에 -d 디렉토리 또는 폴더를 의미합니다.
그런 다음 존재하는 경우 터미널에 인쇄합니다«예, 존재합니다.»(2, 3 행)
그렇지 않고 / opt / 존재하지 않는 경우«아니요 존재하지 않습니다»(4, 5 행)
그런 다음 마지막 줄 (6 번)에서 if를 닫으면 끝입니다.

관련 기사 :
PC와 Virtualbox 가상 머신 간의 네트워크 연결 설정

테스트를 수행하면 / opt /가 존재 함을 보여줍니다.

다른 텍스트 (존재하지 않는 텍스트)를 표시하려면 시스템에없는 다른 폴더에 대해 / opt /를 변경하십시오. 예 : / asd /

보시다시피 -d는 디렉토리가 존재하는지 알 수 있도록 도와줍니다. 이제 -d를 -f로 변경하면 파일의 존재를 확인하는 것입니다 (-d = 디렉토리, -f = 파일 / 파일)

예를 들면 다음과 같습니다

if [ -f /etc/hosts ];
then
echo "Sí, sí existe."
else
echo "No, no existe"
fi

다음은 옵션 목록입니다.

-d -»특정 디렉토리 존재 여부 확인

-f -»특정 파일이 존재하는지 확인

-w -»특정 파일에 쓰기 권한이 있는지 확인

-x -»특정 파일에 실행 권한이 있는지 확인합니다.

그리고 추가 할 것이 많지 않습니다 🙂

나는 이것이 Bash에서 프로그래밍을 좋아하는 사람들에게 매우 유용하고 흥미로울 것이라는 것을 알고 있습니다 😉

안부


기사의 내용은 우리의 원칙을 준수합니다. 편집 윤리. 오류를보고하려면 여기에.

42 코멘트, 당신의 것을 남겨주세요

코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   휴고

    if… then..else없이 수행하는 또 다른 방법 :

    test -f /etc/hosts && elcomando

    또는

    test ! -f /etc/hosts && echo "no se encontró el archivo"

    기타.

    1.    KZKG ^ 가아라

      맞아요 😀
      … O_O… 당신은 Hugo입니까, Hugo는 쿠바 출신입니까? … Windows8, WTF 사용 !!!

      1.    휴고

        예, 저는이 OS에 익숙해지고 있습니다. 솔직히 말해서 내가 유용하다고 생각한 유일한 것은 복사 관리자뿐입니다. 그렇지 않으면 개인적으로 해충, 특히 하이브리드 인터페이스와 메트로 애플리케이션을 발견했습니다. 나는 비스타와 7보다 덜 좋아한다 (이것들보다 약간 더 효율적이긴하지만). 나도 좋아하지 않았다. 내가 사용하는 것은 NFS13과 Skyrim을 재생하는 것뿐입니다.하지만이 OS는 너무 많은 공간을 차지하여 Linux 파티션 [snif]를 삭제해야했습니다.

        그러나 마음의 평화를 위해 어제 전날 86 월에 Arch ISO를 다운로드했으며 저장소를받는 즉시 x64-XNUMX 버전에서 약간의 테스트를 할 계획이라고 말할 것입니다. 이제는 기본적으로 서명 된 패키지를 사용하므로 더 확실하게 다이빙 할 수 있습니다.

        그리고 아버지도 저에게 Sony Xperia를 보내 주겠다고 말씀 하셨는데, Android 용 프로그래밍을 배우기 위해 활용하고 싶은데, 이는 보류중인 소원이었습니다. 그러니 진정해, 나는 아직 힘의 어두운면에 가지 않았다, buahahahaha 😉

  2.   Patz

    남자 테스트

    1.    MSX

      있는지 확인하십시오.

  3.   RAW 기본

    웨 나스! ..

    .. .. 같은 것을 만들 수 있지만 디렉토리는 매개 변수로 전달됩니다 ..

    if [ -d $1 ];
    then
    echo "Sí, sí existe."
    else
    echo "No, no existe"
    fi

    그리고 우리는 그것을 다음과 같이 부릅니다.

    ./test.sh / opt /

    인사..

  4.   사보

    IF는주기 xD가 아닙니다.

  5.   그레고리오 에스파다 스

    내가하고있는 스크립트의 장갑처럼 딱 맞습니다. 와일드 카드를 사용하는 것이 유효합니까? 예를 들어, .mp4가 있는지 확인하려면 그 위에 무언가를 실행하십시오.

    if [-f * .mp4];
    ...

    1.    RAW 기본

      네, 전적으로 유효합니다 ..

      매개 변수를 통해서도 .. "* .mp4"

      1.    RAW 기본

        if [ -f $1 ];
        then
        rm -r $1
        else
        ls
        fi

        호출하는 경우 : ./test.sh * .mp4

        .mp4 파일을 찾으면 .. .. 삭제하지만 해당 디렉토리에있는 파일은 나열하지 않습니다 ..

        1.    그레고리오 에스파다 스

          피드백과 팁에 감사드립니다! 🙂

        2.    호아킨

          f xD를 놓쳤습니다.

          rm -rf $ 1

          이것은 더 흥미 롭습니다!

        3.    b1tblu3

          Wonderful !!!, 매일 나는 Linux에 더 빠져들고, Windows는 내 하드 드라이브의 어두운 구석으로 강등되어 Linux의 빛을 비추기 위해 지워질 것입니다.

          1.    RAW 기본

            훌륭합니다! .. .. 다음 단계로 .. 꺼내서 ..

            약 6 개월 전 나는 모든 컴퓨터에 GNU / Linux 만 있고 W $ .. 또는 Wine .. ..이 아닌 .. .. 더 이상 필요하지 않습니다.

            그리고 저는 제 주변을 감염시키고 있습니다. .. 모든 사람들이 제 아치로 저를 빠르고 효율적이고 행복하게 봅니다 .. .. 그리고 그들은 저에게 Linux를 설치하라고 요청합니다 .. ..yeah! .. 😀

        4.    이누 카제

          다양한 확장 기능을 확인할 수도 있습니다.

          #! / bin / bash
          디렉토리 = $ 홈 / 다운로드

          if [$ Directory]; 그때
          echo "다음은 파일 유형 목록입니다."
          echo "mp1, mp2, mp3, mp4, wav, flac, flaad, aud, midi"
          ls {* .mp ?, *. wav, *. fla, *. aud * .midi}
          fi

          {}를 사용하면이 경우 "?"를 사용하여 여러 확장명을 지정할 수 있습니다. , "모든 문자"를 사용할 수있는 와일드 카드입니다.

          나는 당신이 배울 희망

        5.    페드로

          find [directory] [search_pattern] –exec [command] {} \

      2.    카를로스

        작동하지 않습니다. 다음 파일을 디렉토리에 넣습니다.
        AB20160420.TXT
        AB20160421.TXT
        AB20160422.TXT
        AB20160423.TXT
        AB20160424.TXT
        AB20160425.TXT
        search.sh

        #! / bin / bash
        경로 = / tmp / 테스트
        cd $ ROUTE
        ls -la | awk '{print»«$ 9}'
        [[-f AB.TXT]]; 그때
        echo»AB가 있으면 IF 입력
        .TXT »
        fi
        if [-f AB20160422.TXT]; 그때
        echo "특정 AB 파일에 대한 입력"
        fi

        내가 [-f AB.TXT] 오류 발생
        내가 [[-f AB
        .TXT]] 오류가 발생하지 않지만 파일을 찾을 수 없습니다.
        예를 들어 특정 파일을 넣을 때만 작동합니다.
        if [-f AB20160422.TXT]; 그때

        와일드 카드 * 또는?와 함께 작동하도록 할 수 없습니다.

        1.    페드로

          #! / usr / bin / env bash
          #.인코딩 = utf-8.

          내용

          EXIT_OK = 0
          EXIT_BAD = 66

          굵게 =»\ 033 [1 분»
          NC =»\ 033 [0m»
          빨간색 =»\ 033 [31 분»

          만약 [! "$ 1"];
          그때
          echo "매개 변수 누락"
          $ EXIT_BAD 출구
          fi

          cd "$ 1"

          파일 =»ls -h1 $ 1»

          $에있는 파일 ($ 파일); 하다
          echo -e "여기서 $ BOLD $ file $ nc로 무엇이든 할 수 있습니다."

          $ EXIT_OK 출구

  6.   MSX

    @KZ, 이것에 대해 더 말해봐 : "그리고 그것은 내가 파이썬의 멋진 세계에 들어가기 때문이다"!

    1.    KZKG ^ 가아라

      HAHAHAHA 아니 ... 조금씩 🙂
      저는 여전히 Python의 초보자 일 뿐이며 시간과 시간을 할애 할 시간이 거의 없기 때문에 느립니다. 예, 느리지 만 학습은 확실합니다 😀

  7.   아우 도반

    정말 고마워요 😀 어제 어떻게할지 생각하고 있었어요.

  8.   라이히스크

    이것은 ncurses로 훌륭합니다 🙂

  9.   Jazeco

    한 단어로… 훌륭합니다!
    오랫동안 인터넷에서 다운로드 할 수있는 스크립트를 완성하고 있었는데, 1ro의 존재 여부를 확인하지 못하고 요청한 파일을 한 번 더 다운로드하는 문제가있었습니다.
    아주 좋은 tuto.

  10.   줄란

    여기 칠레로부터의 엄청난 공헌에 감사드립니다.
    매일 LINUX는 나를 즐겁게 놀라게합니다.
    오래 살았던 자유 소프트웨어 MIERDAAAA.

  11.   데이비드

    봉사하다
    파일이 디렉토리에 있는지 확인

  12.   그로버

    «/ tmp / receivers»경로에 파일이 있는지 확인하려면 명령을 실행합니다. 어떻게됩니까?

    나는 매우 감사 할 것이다

    안부

  13.   요한 복음

    친애하는, 파일이 완전히 채워 졌는지 IF로 확인하려면 ???. 전송을 위해 파일을 채울 때 데이터의 절반으로도 걸릴 수 있기 때문에 이것을 묻습니다.

    응답 해 주셔서 감사합니다.

  14.   이누 카제

    예를 들어 "파일이 없는지 확인"또는 "디렉토리"와 같은 예제도 추가해야한다고 생각합니다.

    존재하지 않는지 확인하려면, 예를 들어 변수 사용->

    디렉토리

    #! / bin / bash
    디렉토리 =»$ 홈 / 테스트 디렉토리»
    파일 =»$ 홈 / 테스트 파일»

    만약 [! -d "$ 디렉토리"]; 그때
    echo "$ 디렉토리가 없습니다"
    echo "만들기->"$ 디렉토리 "
    mkdir "$ 디렉토리"
    그렇지 않으면
    echo "디렉터리"$ 디렉터리 "이미 존재 함
    fi

    만약 [! -d "$ 파일"]; 그때
    echo "$ 파일이 존재하지 않습니다"
    echo "만들기->"$ 파일 "
    "$ 파일"을 터치합니다.
    그렇지 않으면
    echo "파일"$ 파일 "이미 존재 함
    fi

    1.    카테 쿄

      mkdir을 할 때 나중에 터미널이 그것을 만들 수 있는지 확인하십시오. 왜냐하면 그것이 루트 또는 시스템 인 폴더라면 공을 부술 수 있기 때문입니다. hhah

  15.   훌리오 비 나치

    인사 KZKG ^ Gaara는 내가 컬을 사용하는 것처럼 쿼리합니다. 예를 들어 콘솔에서 URL을 핑하여 사용할 수 있는지 확인하는 방법을 알고 싶습니다. http://portal.com/directorio/archivo1.php file1이 방문의 IP를 저장하는 곳은 XNUMX 분마다 핀을 만들어야하는 팀을 모니터링하기위한 것이므로 때때로 변경되기 때문에 공개 IP를 인식하고 ssh로 연결할 수 없습니다. .

    인사 미리 감사드립니다. 신의 축복이 있기를.

    1.    KZKG ^ 가아라

      안녕하세요,

      먼저 IP 변수 (예 :)가 해당 파일의 내용이라고 말해야합니다.이를 위해 다음을 수행해야합니다.
      1. 파일 다운로드
      2. 내용을보고 거기에서 IP를 얻으십시오
      3. 그 IP는 변수입니다

      예를 들면 다음과 같습니다
      여기에서 파일을 다운로드합니다.»wget http://portal.com/directorio/archivo1.php -o 파일.html
      그런 다음 변수에 내용을 할당합니다.-»: $ {IP : =`cat file.html`}
      .. 해당 파일의 내용에 IP 만 있다고 가정하고 그렇지 않은 경우 grep, awk 또는 head로 작업해야합니다.

      IP를 변수로 사용하면 나머지는 세상에서 가장 간단한 것입니다 🙂

      이메일 (kzkggaara [at] desdelinux [dot] net)에 저에게 편지를 보내 주시면 기꺼이 도와 드리겠습니다.

      1.    훌리오 비 나치

        kzkggaara 대단히 감사합니다.

  16.   나탈리아

    안녕하세요, 저는 컴퓨팅에 대해 잘 이해하지 못하며이 게시물이 제가 가진 문제와 관련이 있는지 모르겠습니다.

    게시물이 XNUMX 년 전의 게시물 임에도 불구하고 나를 읽으 셨다면 댓글을 달았습니다.
    일부 비디오를 저장하기 위해 데스크탑에 폴더를 만든 것으로 나타났습니다. 더 이상 필요하지 않기 때문에 해당 비디오를 삭제했으며 이제이 폴더에 해당 비디오가 존재하지 않는다는 메시지가 표시됩니다 (데스크톱에 표시 되더라도).

    -이것이 내가 가진 첫 번째 문제입니다.
    폴더를 삭제할 수 없습니다.

    -두 번째 문제는 더 중요하다고 생각합니다.
    폴더를 삭제하려고 PHOTOS 폴더를 넣었습니다. 이제 "존재하지 않는"폴더를 열면 비어 있고 사진이 없습니다.

    사진을 어떻게 복구 할 수 있습니까? "숨겨진 문서 표시"폴더에 옵션을 지정했지만 PHOTOS 폴더가 나타나지 않습니다.

    어떻게 해결되는지 알 수 있기를 바랍니다.
    그라시아.

    1.    발도

      두 명의 주요 사용자가 있습니다 : root와 your_user (예 : natalia). 둘 다 개인 폴더가 있습니다. your_user는 / home에 있고 root는 / (루트 디렉토리)에 있습니다. 폴더를 마우스 오른쪽 버튼으로 클릭하면 폴더가 속한 사람을 볼 수 있습니다. 사용하는 환경에 따라 sudo, gksu 또는 kdesu를 사용하는 파일 관리자의 루트 인 경우 루트 디렉토리-> 루트-> 데스크탑으로 이동하면 사진을 찾을 수 있으며 폴더를 삭제할 수 있습니다. 파일 또는 디렉토리의 소유자가 아니고 액세스 권한이없는 일부 배포판은 디렉토리 / 파일이 존재하지 않음을 알려줍니다. 소유자이고 루트가 아닌 경우 sudo 등을 사용하여 파일 관리자로 동일한 작업을 수행하고 루트 디렉토리-> / home-> personal_folder-> Desktop으로 이동하여 사진이 있는지 그리고 폴더를 삭제할 수 있는지 확인합니다.
      이것이 작동하지 않으면 터미널 (콘솔)에서 다른 옵션을 확인해야합니다.

  17.   페드로 마누엘 아구아 요 무뇨 즈

    안녕하세요, 어떻게 지내세요? 저는 bash에서 작업을하고 있는데 키보드에서 입력 한 디렉토리가 있는지 확인하는 방법을 알고 싶습니다.

    #! / bin / bash
    경로 읽기
    #Enter ~ / 데스크탑
    # 그런 다음 해당 디렉토리를 탐색하려고합니다.
    cd $ 경로
    # 다음과 같은 bash 메시지가 나타납니다. cd : ~ / Desktop : 파일 또는 디렉토리가 존재하지 않습니다.

    내 질문은 키보드에서 입력하고 디렉토리 경로로 사용하려면 어떻게해야합니까?

  18.   미겔

    그룹이 있는지 어떻게 알 수 있습니까?

  19.   Heidy

    좋아요 버튼을 눌렀을 때 카나 이마에 문제가 생겼는데 파일이나 디렉토리가 없어서 그 문제를 해결할 수 있다는 말이 나오고 나머지는 열리지 않습니다. 감사합니다.

  20.   카를로스

    파일 이름에 공백이 있으면 BASH에서 if를 어떻게 수행합니까?
    예를 들면 다음과 같습니다
    XNUMX 월 data.xlsx

    파일이 있는지 확인하려면

    1.    마누엘 알코 서 히메 네즈

      카를로스, 이렇게 :

      if [[ "$ 변수"== 데이터 \ 월 \ of \ April.xlsx]]; 그런 다음 '일치'를 에코합니다. fi

      다음을 수행 할 수도 있습니다.
      if [[ "$ variable"== 'XNUMX 월의 데이터 .xlsx']]; 그런 다음 '일치'를 에코합니다. fi

      다른 옵션 :
      [[ "$ Variable"== 'XNUMX 월의 데이터 .xlsx']] && echo 'matches'|| echo '일치하지 않음'

      인터넷의 일부 어두운 영역에서는 [] 대신 [[]]를 사용하는 것이 좋습니다. 숫자를 비교하려면 다음과 같이하십시오. ((변수> = 3)) && echo '변수가 3보다 크거나 같음'|| echo '변수가 3보다 작습니다'

      따라서 숫자의 경우 :

      if ((숫자! = 4)); then echo "$ {number}는 4가 아닙니다"; else echo "$ {number}는 4"; fi

  21.   세자르 마테우스

    디렉토리에 특정 텍스트가 있는지 확인하고 편집 할 수있는 코드를 어떻게 만들 수 있습니까?

    예 :

    if (text1)

    아무것도하지 마세요

    그렇지 않으면

    text1을 text2로 변경

  22.   미겔

    질문, 파일이 있는지 여부를 15 초마다 확인하는 방법은 무엇입니까? 감사합니다.

  23.   강둑

    안녕하세요
    이:
    if [-w / home / Komun / Logs / ti]; 그때
    파일이 쓰기 가능한지 확인하십시오. 그러나 사용자 권한을 기반으로합니다. 그룹이나 다른 사람이 권한을 가지고 있는지 알아낼 수 있습니까?