폴더의 모든 파일을 나열하는 쉘 스크립트

폴더의 모든 파일을 나열하는 쉘 스크립트

폴더의 모든 파일을 나열한 다음 파일 이름이 "C"로 시작하는 경우 권한을 777로 변경하고 "F"로 시작하는 파일을 삭제하는 쉘 스크립트를 작성하도록 도와주세요.

위 문제에 대한 내 코드는 다음과 같습니다.

for item in *
do
    if [ -f $item ]
    then
       echo $item
    fi 
    if [ $item  c* ]
    then
       chmod 777 -f c*
       echo $item
    fi
    if [ $item  f* ]
    then 
        rm -v f*
        echo $item
    fi
    
    
         
done 

정정해주세요

답변1

이것은 귀하의 문제에 대한 답이 아닙니다. 귀하의 질문에 대한 답변은 다음과 같습니다(일부 서식이 필요하고 댓글에 허용된 것보다 더 많은 공간이 필요함).

  1. 이것이 숙제라면 이를 명시해야 하며, 다른 사람에게 문제 해결을 부탁해서는 안 되지만 Unix에 대해 더 자세히 알아보기 위해 구체적인 질문을 할 수는 있습니다.

  2. 숙제처럼 보이기 때문에, 과제의 개념은 아마도 "일을 끝내기" 위한 것이 아니라 프로그래밍과 사고를 가르치는 것이기 때문에 이러한 질문에 답하기에는 적합한 채널이 아닙니다.

3- 여기서 할 수 있는 일은 질문을 여러 부분으로 나눈 후 다음과 같이 질문하는 것입니다.

  • 모든 파일을 어떻게 나열합니까? ,
  • 패턴을 사용하여 검색하는 방법은 무엇입니까?
  • 파일 중 일부를 필터링한 후 파일에 명령을 적용하려면 어떻게 해야 합니까?
  • 이 작업을 수행하기 위해 쉘 명령을 사용하시겠습니까? 또는
  • bash를 프로그래밍 언어로 사용할 수 있나요?

프로그래밍 루프, 사례 설명 및 if 워크플로에 대한 과제가 있고 이에 대한 구체적인 질문이 있는 경우 Stack Overflow가 더 나은 곳일 수 있습니다.

Linux를 처음 사용하고 명령이나 파이프의 마법이나 쉘 스크립트를 사용하여 이러한 명령을 자동화하는 방법(프로그래밍이 아닌 파이프)을 아직 모르는 경우 필터링 grep및 실행 사용 에 대해 배울 수 있도록 문의하십시오 xargs. 그리고 실행을 사용하세요 find … -exec.

예를 들어, Linux에서는 파일을 나열 ls하고 필터링 할 수 있습니다 grep. 여기서는 "다음으로 시작"하는 정규식을 찾아야 합니다.

이것을 알고 나면 루프에 넣을지 파이프에 넣을지 결정해야 합니다 xargs(전력을 배우는 것이 좋습니다 xargs).

올바른 길로 안내하는 고전적인 농담은 다음과 같습니다.

ls | grep  "^c" | xargs -I{} echo "wanted_command -options command {}"

따라서 이를 자동화하는 스크립트를 작성할 수 있습니다.

if이것이 할당인 경우 각 / 문 case에서 적절한 함수가 호출 되도록 각 작업에 대한 함수를 생성하는 것이 좋습니다(셸에서 함수 생성에 대해 읽어야 함) .

관련 정보