주어진 디렉토리의 파일을 반복하고 파일이 존재하는지 확인하는 방법은 무엇입니까?

주어진 디렉토리의 파일을 반복하고 파일이 존재하는지 확인하는 방법은 무엇입니까?

이것은 특정 디렉토리에 있는 파일 목록입니다.

a_object_1.0.zip
file_name_conf_1.1.zip
anim_dup_1.1.zip

지정된 디렉터리의 파일을 반복하고 파일이 파일 목록의 파일 패턴과 일치하는지 확인하고 압축을 풀고 각 파일의 이름을 특정 접두사( cx_a_object_1.0.zip, cx_file_name_conf_1.1.zip, anim_anim_dup_1.1.zip) 로 바꿉니다.

답변1

#!/bin/bash
for szFile in /var/tmp/*.zip;
do 
  unzip "$szFile";
  mv "$szFile" "Prefix_"$(basename -- "$szFile")
done

할 것이다:

  • zip모든 파일을 반복/var/tmp
  • 추출하세요
  • 접두사 추가
  • 현재 디렉터리로 이동합니다.

답변2

다음은 find를 사용한 예입니다.

find somedir/ -type f -name 'some.zip' -exec bash -c 'name=$1; echo unzip "$name" -d "${name%/*}"; echo  mv "$name" "${name%%/*}/cx_c_${name##*/}"' _ {} \;

echo결과가 만족스러우면 삭제하세요.

또는 로컬 매개변수가 있는 함수를 생성하고 다음과 같이 파일 이름을 함수에 매개변수로 전달합니다.

cfind() {
 local name=$1
 find somedir/ -type f -name "$name" -exec bash -c 'name=$1; echo unzip "$name" -d "${name%/*}"; echo  mv "$name" "${name%%/*}/cx_c_${name##*/}"' _ {} \;
    }

불러라

cfind myfilename.zip

관련 정보