>

다음을 시도하고 있습니다 :

글로브 패턴과 일치하는 원격 파일 목록을 검색합니다 :

existing_files=$(ssh user@example.com "ls pattern*")

패턴과 일치하는 새 파일을 추가하십시오 :

scp pattern_matching_file user@example.com:

이제 $existing_file 에서 파일을 삭제하고 싶습니다  새로 만든 파일을 삭제하지 않고 방법을 잘 모르겠습니다.

  • 답변 # 1

    있어

    와이즈 비즈 와이즈 비즈

    그런 다음 방금 전송 한 파일의제외디렉토리에있는 모든 파일을 삭제하려고합니다. 다음은 두 가지 제안입니다.

    <올>

    복사 전에 모든 파일 삭제

    방금 복사 한 파일을 제외한 파일 삭제

    scp pattern_matching_file user@example.com:
    
    

    두 경우 모두 실제 목표 경로에 따라 ssh -qn user@example.com 'find -maxdepth 1 -type f -name '*pattern*' -delete' 를 생략해도 좋을 것 같습니다  명명 된 디렉토리에있는 모든 것을 (도트 파일, 마음 포함) 삭제합니다 와이즈 비즈  명령은 ssh -qn user@example.com 'find -maxdepth 1 -type f \( -name 'keep_this_file' -o -name '*pattern*' -delete \)' 를 위해 단순화 된 쉘 글로브를 사용합니다.  패턴을 사용하여 원래 -name '*pattern*' 를 사용해야합니다.  당신은 find 에 공급 .

    와이즈 비즈 교체   -name 와 함께  이론을 적용하기 전에 테스트하십시오.

    <시간>

    패턴과 일치하는 파일 목록을 검색하려면 pattern 를 사용할 수 있습니다  그러나 그것은 또한 일치하는 디렉토리로 내려갑니다. 와이즈 비즈  플래그는 피할 수 있지만 파일 이름에 줄 바꿈 문자 ls 가 있으면 여전히 합병증이 생깁니다. . 특히 나중에 해당 파일을 사용하여 파일을 삭제하려는 경우

    대안으로 이와 같은 파일 배열을 만들 수 있습니다

    -delete
    
    
    -print

  • 이전 Bash에서 변수로 MQTT?
  • 다음 debian - 새 시간이 시작되기 직전에 정확한 시간에 일괄 작업 시작